Запросы по столбцам даты оракула всегда сбивают с толку. Тип столбца даты - это всегда дата и время. При сохранении текущей даты из sysdate всегда хранится компонент времени.
Есть добрые и злые способы опрашивать столбцы даты. Я показываю и голосую за некоторых.
where to_char(DAT, 'DD-MON-YYYY') = '16-NOV-2009'
where trunc(DAT) = to_date('16-NOV-2009', 'DD-MON-YYYY')
Оба плохие, потому что они не используют индекс. Чтобы избежать этого, вы можете определить индекс функции на основе выражения.
Хитрость обоих заключается в том, чтобы отрезать временную составляющую. Если время не требуется, то рекомендуется сократить время в триггерах INSERT и UPDATE. Индекс на основе функций может преобразовываться в нормальный индекс.
where DAT between to_date('16-NOV-2009', 'DD-MON-YYYY')
and to_date('16-NOV-2009 23:59:59', 'DD-MON-YYYY HH24:MI:SS')
where DAT >= to_date('16-NOV-2009', 'DD-MON-YYYY') and DAT < to_date('16-NOV-2009', 'DD-MON-YYYY')+1
Эти два всегда мои любимые.
Полезно использовать to_date и to_char для преобразования значений между строкой и датой и временем.