Что такое тип данных INSERTION_DATE
?
Если это DATE
, то сравнение его с другой датой (примечание: это литерал даты; используемое вами значение - строка!)
select * from table where insertion_date = date '2018-11-20'
может работать, если только INSERTION_DATE
содержит компонент времени (часы и минуты).Затем самый простой вариант - обрезать его значение (чтобы вы могли получить саму дату в полночь):
select * from table where trunc(insertion_date) = date '2018-11-20'
, но это будет разорить индекс, указанный в этом столбце (если толькоэто функциональный).Для небольших столов это не имеет никакого значения.Для большого объема данных он будет преобразован в
select * from table where insertion_date >= date '2018-11-20'
and insertion_date < date '2018-11-21'
Если, с другой стороны, INSERTION_DATE
является строковым (VARCHAR2
или CHAR
) типом данных (что очень плохоидея; рассмотрите возможность переключения на DATE
тип данных), затем вам нужно знать его формат, сначала преобразовать его в DATE
, а затем сравнить с другой датой.Например, если это была строка, содержащая значения даты в формате dd.mm.yyyy
, то
select * from table where to_date(insertion_date, 'dd.mm.yyyy') = date '2018-11-20'
Это, безусловно, завершится ошибкой, если какая-либо строка в этом столбце не соответствует такому формату или содержит недопустимые значения (такие как «дата» (53.67 (48x48)).