Ngày không có định dạng - nó được lưu trữ bên trong cơ sở dữ liệu dưới dạng 7 byte (đại diện cho năm, tháng, ngày, giờ, phút và giây) và nó không phải là cho đến bất kỳ giao diện người dùng nào bạn đang sử dụng (tức là SQL / Plus, SQL Developer, Java, v.v.) cố gắng hiển thị nó cho bạn, người dùng và chuyển nó thành thứ mà bạn thấy có ý nghĩa (thường là một chuỗi) mà ngày có định dạng.
Một điều cần lưu ý là ngày luôn có các thành phần năm, tháng, ngày, giờ, phút và giây. Đang làm:
to_date(TO_CHAR(CHECKED_DATE, 'MON-YYYY'), 'MON-YYYY')
Hiệu quả giống như làm:
TRUNC( Checked_Date, 'MM' )
và sẽ vẫn có thành phần ngày, giờ, phút và thứ hai nhưng sẽ bị cắt bớt đến nửa đêm của ngày đầu tiên của tháng. Giao diện người dùng có thể chỉ có các tùy chọn được đặt để không hiển thị thành phần thời gian (nhưng ngày vẫn sẽ có).
Những gì bạn muốn làm là chuyển đổi ngày tháng thành một chuỗi được định dạng:
select ID_NO,
CHECKED_DATE,
TRIM( LEADING '0' FROM TO_CHAR( CHECKED_DATE, 'MM-YYYY') ) AS A
from Doctor_Checkup;
hoặc là
select ID_NO,
CHECKED_DATE,
EXTRACT( MONTH FROM CHECKED_DATE )
|| '-' || EXTRACT( YEAR FROM CHECKED_DATE ) AS A
from Doctor_Checkup;