sql >> Databasteknik >  >> RDS >> Oracle

problem med to_date-funktionen med sysdate

Jag vill förklara varför du får olika resultat.

Se denna sqlfiddle

Som det redan har sagts ses sysdate som DATE typ och du gör en implicit konvertering när

select to_date(sysdate, format) from dual;

eftersom den första parametern för to_date bör vara varchar-typ gör systemet:

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

eftersom ditt implicita datumformat är 'DD-MON-YY' , din fråga går till:

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 andra to_date, eftersom yyyy är ett helt tusenårigt format, går till '01-JAN-0013' som är 13AD och förmodligen är SÖNDAG :)



  1. Filtrering efter OFFSET-FETCH-alternativ i Välj fråga - SQL Server / TSQL självstudie del 118

  2. PL/SQL - Använd listvariabel i Where In-klausul

  3. Upptäck hur kardinalitet påverkar prestanda

  4. Bästa sättet att undvika dubbla inträde i mysql-databasen