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

SQL заявка, използваща две дати

'10-MAY-20' не е дата, а низ. Датата няма никакъв формат, въз основа на вашите специфични за локала NLS настройки, тя се показва в четим от хора формат с помощта на TO_CHAR и правилна маска за формат.

Освен това трябва да избягвате използването на двуцифрено YY представителство за година, това е цялата причина Y2K бъгът започна. Винаги използвайте YYYY формат.

За да конвертирате низ в дата:

Използвайте TO_DATE и подходяща маска за формат:

where  date_col > TO_DATE('10-MAY-2020', 'DD-MON-YYYY')  
and    date_col < TO_DATE('13-MAY-2020', 'DD-MON-YYYY')

Или използвайте ANSI date literal който използва фиксиран формат 'YYYY-MM-DD' :

where  date_col > DATE '2020-05-10' and date < DATE '2020-05-13'

Друго нещо, DATE е запазена дума на Oracle, можете да видите документацията . Може би използвате идентификатор в кавички "date" т.е. използване на двойни кавички около запазената дума.

Това вероятно е, защото настройките ви за NLS на SQL Developer са зададени на 'DD-MON-YY' , така че когато подадете датата в този формат, това прави имплицитно преобразуване в дата. Въпреки това, ако промените формата, той няма да работи:

alter session set NLS_DATE_FORMAT = '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. Използване на rownum в SQL израза на oracle в комбинация с клауза за поръчка

  2. Oracle Connect By

  3. Как да изчисля стойност на колона в oracle 10g?

  4. Проверете дали два избора са еквивалентни

  5. Как да произведем сливане на два набора от данни с select SQL израз (СУБД на Oracle)?