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 :)