Jeg vil gerne forklare, hvorfor du får forskellige resultater.
Se denne sqlfiddle
Som det allerede er sagt, ses sysdate som DATE
type, og du laver en implicit konvertering, når
select to_date(sysdate, format) from dual;
fordi den første parameter for to_date skal være varchar-typen, gør systemet:
select to_date(to_char(sysdate), format) from dual;
fordi dit implicitte datoformat er 'DD-MON-YY'
, din forespørgsel går ind på:
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;
den anden to_date, fordi yyyy
er et fuldt tusinde års format, går til '01-JAN-0013', som er 13AD og sandsynligvis er SØNDAG :)