Oracle
 sql >> Database >  >> RDS >> Oracle

problema con la funzione to_date con sysdate

Voglio spiegare perché ottieni risultati diversi.

Vedi questo sqlfiddle

Come è già stato detto, sysdate è visto come DATE digita e stai eseguendo una conversione implicita quando

select to_date(sysdate, format) from dual;

poiché il primo parametro di to_date dovrebbe essere varchar type il sistema fa:

select to_date(to_char(sysdate), format) from dual;

perché il formato della data implicita è 'DD-MON-YY' , la tua richiesta va in:

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;

la seconda fino a_data, perché yyyy è un formato millenario completo, va a '01-JAN-0013' che è 13AD e probabilmente è DOMENICA :)