Saya ingin menjelaskan mengapa Anda mendapatkan hasil yang berbeda.
Lihat sqlfiddle ini
Seperti yang sudah dikatakan, sysdate dilihat sebagai DATE
ketik dan Anda melakukan konversi implisit saat
select to_date(sysdate, format) from dual;
karena parameter pertama to_date harus berupa tipe varchar yang dilakukan sistem:
select to_date(to_char(sysdate), format) from dual;
karena format tanggal implisit Anda adalah 'DD-MON-YY'
, kueri Anda masuk ke:
SELECT TO_CHAR(to_date('01-JAN-13', 'DD-MON-yy'), 'DAY'),
TO_CHAR(to_date('01-JAN-13', 'DD-MON-yyyy'), 'DAY'),
TO_CHAR(to_date('01-JAN-13', 'DD-MON-rr'), 'DAY'),
TO_CHAR(to_date('01-JAN-13', 'DD-MON-rrrr'), 'DAY')
FROM dual;
tanggal_kedua, karena yyyy
adalah format ribuan tahun penuh, pergi ke '01-JAN-0013' yang 13AD dan mungkin adalah MINGGU :)