Ik wil uitleggen waarom je verschillende resultaten krijgt.
Zie deze sqlfiddle
Zoals al gezegd, wordt sysdate gezien als DATE
type en u voert een impliciete conversie uit wanneer
select to_date(sysdate, format) from dual;
omdat de eerste parameter van to_date het varchar-type moet zijn, doet het systeem:
select to_date(to_char(sysdate), format) from dual;
omdat uw impliciete datumnotatie 'DD-MON-YY'
. is , uw vraag gaat over:
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;
de tweede to_date, omdat yyyy
is een volledig formaat van duizenden jaren, gaat naar '01-JAN-0013' wat 13AD is en waarschijnlijk ZONDAG is :)