Oracle
 sql >> база данни >  >> RDS >> Oracle

проблем с функцията to_date със sysdate

Искам да обясня защо получавате различни резултати.

Вижте този sqlfiddle

Както вече беше казано, sysdate се вижда като DATE въведете и правите имплицитно преобразуване, когато

select to_date(sysdate, format) from dual;

тъй като първият параметър на to_date трябва да бъде тип varchar, който системата прави:

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

защото вашият имплицитен формат на дата е 'DD-MON-YY' , вашата заявка отива в:

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;

втората to_date, защото yyyy е формат от пълни хиляди години, отива до '01-JAN-0013', което е 13 AD и вероятно е НЕДЕЛЯ :)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Брой петъци между две дати

  2. Как работи ROWNUM в заявка за пагинация?

  3. Пренаредете колоните на таблицата в Oracle

  4. ORA-06502:PL/SQL:числова или стойностна грешка:буферът за низ от знаци е твърде малък

  5. Тип данни на Oracle JDBC и Oracle CHAR