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

problem med to_date funktion med sysdate

Jeg vil gerne forklare, hvorfor du får forskellige resultater.

Se denne sqlfiddle

Som det allerede er sagt, ses sysdate som DATE type, og du laver en implicit konvertering, når

select to_date(sysdate, format) from dual;

fordi den første parameter for to_date skal være varchar-typen, gør systemet:

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

fordi dit implicitte datoformat er 'DD-MON-YY' , din forespørgsel går ind på:

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 anden to_date, fordi yyyy er et fuldt tusinde års format, går til '01-JAN-0013', som er 13AD og sandsynligvis er SØNDAG :)



  1. Sådan fjerner du standardværdien af ​​kolonnen i MySQL

  2. 3 måder at bruge ALL i SQL Server

  3. Sådan konverteres decimal til hexadecimal ved hjælp af TO_CHAR() i Oracle

  4. Hvad er et simpelt kommandolinjeprogram eller script til backup af SQL-serverdatabaser?