Искам да обясня защо получавате различни резултати.
Вижте този sqlfiddle
Както вече беше казано, sysdate се вижда като DATE
въведете и правите имплицитно преобразуване, когато
select to_date(sysdate, format) from dual;
тъй като първият параметър на to_date трябва да бъде тип varchar, който системата прави:
select to_date(to_char(sysdate), format) from dual;
защото вашият имплицитен формат на дата е 'DD-MON-YY'
, вашата заявка отива в:
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;
втората to_date, защото yyyy
е формат от пълни хиляди години, отива до '01-JAN-0013', което е 13 AD и вероятно е НЕДЕЛЯ :)