'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';