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

Oracle SQL заявка за формат на дата

to_date() връща дата в 00:00:00, така че трябва да "премахнете" минутите от датата, с която сравнявате:

select * 
from table
where trunc(es_date) = TO_DATE('27-APR-12','dd-MON-yy')

Вероятно искате да създадете индекс на trunc(es_date) ако това е нещо, което правите редовно.

Литералът '27-APR-12' може да се провали много лесно, ако форматът на датата по подразбиране се промени на нещо различно. Затова се уверете, че винаги използвате to_date() с подходяща маска за формат (или ANSI литерал:date '2012-04-27' )

Въпреки че постъпихте правилно като използвате to_date() и без да разчитате на имплицитно преобразуване на типове данни, вашето използване на to_date() все още има фин капан поради формата 'dd-MON-yy' .

С различна езикова настройка това може лесно да се провали, напр. TO_DATE('27-MAY-12','dd-MON-yy') когато NLS_LANG е настроен на немски. Избягвайте всичко във формата, което може да е различно на друг език. Използване на четирицифрена година и само числа, напр. 'dd-mm-yyyy' или 'yyyy-mm-dd'



  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. Разбиране на поведението на функцията remainder() в Oracle

  3. Oracle UpdateXML() променя XML структурата?

  4. Как да получите пътя на йерархична таблица

  5. Защо Oracle не ви казва КОЯ таблица или изглед не съществува?