Chci vysvětlit, proč získáváte různé výsledky.
Viz tento sqlfiddle
Jak již bylo řečeno, sysdate je vnímáno jako DATE
zadejte a provádíte implicitní konverzi, když
select to_date(sysdate, format) from dual;
protože první parametr to_date by měl být typ varchar, který systém dělá:
select to_date(to_char(sysdate), format) from dual;
protože váš implicitní formát data je 'DD-MON-YY'
, váš dotaz přejde do:
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;
druhý to_date, protože yyyy
je plný tisíciletý formát, jde do '01-JAN-0013', což je 13AD a pravděpodobně je NEDĚLE :)