Jag vill förklara varför du får olika resultat.
Se denna sqlfiddle
Som det redan har sagts ses sysdate som DATE typ och du gör en implicit konvertering när
select to_date(sysdate, format) from dual;
eftersom den första parametern för to_date bör vara varchar-typ gör systemet:
select to_date(to_char(sysdate), format) from dual;
eftersom ditt implicita datumformat är 'DD-MON-YY' , din fråga går till:
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 andra to_date, eftersom yyyy är ett helt tusenårigt format, går till '01-JAN-0013' som är 13AD och förmodligen är SÖNDAG :)