Je veux expliquer pourquoi vous obtenez des résultats différents.
Voir ce sqlfiddle
Comme il a déjà été dit, sysdate est vu comme DATE
type et vous effectuez une conversion implicite lorsque
select to_date(sysdate, format) from dual;
car le premier paramètre de to_date doit être de type varchar, le système fait :
select to_date(to_char(sysdate), format) from dual;
car votre format de date implicite est 'DD-MON-YY'
, votre requête va dans :
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;
le deuxième to_date, car yyyy
est un format complet de milliers d'années, va à '01-JAN-0013' qui est 13AD et probablement DIMANCHE :)