Если вы использовали SYSDATE
как , это функция, которая содержит дату и время, например
SQL> alter session set nls_date_format = 'dd.mm.yyyy hh24:mi:ss';
Session altered.
SQL> select sysdate from dual;
SYSDATE
-------------------
06.05.2020 07:20:38
SQL>
и сохраняется как таковая в вашей таблице (я предполагаю, что тип данных столбца - DATE
).
Следовательно, если вы искали where dateofstart = '04-MAY-20'
, вы сделали две ошибки:
- вы сравниваете
DATE
столбец типа данных со строкой. Да, '04-MAY-20'
- строка; это выглядит как для вас и меня, но для Oracle это просто строка. Oracle пытается неявно преобразовать его в значение даты, используя настройки NLS; иногда это удается, иногда нет. Поэтому вам следует всегда использовать даты и не полагаться на возможный успех преобразования. - представьте, что вы сравнили
dateofstart
с '01/02/03'
; что такое 01
? Это день (может быть)? Месяц (тоже может быть)? Год (конечно, а почему бы и нет)? Но, если вы использовали - литерал даты, который всегда имеет формат
yyyy-mm-dd
, например date '2001-03-02', все (включая Oracle) будут знать, что это 2 марта 2001 года TO_DATE
, например to_date('01/02/03', 'yy/dd/mm')
, поскольку ваш столбец содержит дату и время, вы Я бы получил несколько строк, только если бы dateofstart
значение было сохранено ровно в полночь в начале этого дня. Если нет, либо
- «удалить» компонент времени, например
where trunc(dateofstart) = date '2020-05-04'
(который будет использовать индекс (если он существует) в столбце dateofstart
неиспользуемый , если только вы создаете индекс на основе функций) или используйте between
, например,
where dateofstart between to_date('04.05.2020 00:00:00', 'dd.mm.yyyy hh24:mi:ss')
and to_date('04.05.2020 23:59:59', 'dd.mm.yyyy hh24:mi:ss')
Ваш вторая попытка неверна (лишняя одинарная кавычка, 010
(что это?)).
Третья может работать, если Oracle распознал формат, который вы использовали.
Если вышеперечисленное не помогает, опубликуйте тестовый пример (create table
и insert into
несколько примеров записей) (отредактируйте исходное сообщение, которое вы написали), чтобы мы могли увидеть, что вы сделали.