Ich möchte erklären, warum Sie unterschiedliche Ergebnisse erhalten.
Siehe diese sqlfiddle
Wie bereits gesagt, wird sysdate als DATE
angesehen type und Sie führen eine implizite Konvertierung durch, wenn
select to_date(sysdate, format) from dual;
weil der erste Parameter von to_date vom Typ varchar sein sollte, tut das System:
select to_date(to_char(sysdate), format) from dual;
weil Ihr implizites Datumsformat 'DD-MON-YY'
ist , Ihre Abfrage geht in:
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;
das zweite to_date, weil yyyy
ist ein vollständiges Jahrtausendformat, geht bis '01-JAN-0013', was 13 n. Chr. ist und wahrscheinlich SONNTAG ist :)