Если тип данных столбца равен TIMESTAMP
, как написал ОП в комментарии к отличному ответу Сандры Росси, то на самом деле требуется три преобразования, чтобы выбор работал должным образом.
- превратить первый параметр выбора (между ...) в дату
- превратить второй параметр выбора (между ... и b) в дату
- превратить столбец отметки времени
DocDate
в дату
Это выглядит так:
select
*
from
OPDN A
where
to_date(A."DocDate") between to_date('01/01/2020', 'MM/DD/YYYY')
and to_date('01/31/2020', 'MM/DD/YYYY');
Преобразование параметров выборки с помощью форматных строк должно быть очевидным, а результатом является та же информация в виде данных типа даты SQL.
Третье преобразование (to_date(a."DocDate")
) может показаться неожиданным, но довольно важным.
Выбор предназначен для работы: он должен включать все от самого начала периода выбора до самого конца. Если входные фильтры просто преобразовать в временные метки, то они будут иметь временную составляющую 00:00
(полночь), так как не предоставляется никакой информации о времени суток.
Это приведет ко всем значениям "DocDate" после полночь исключить.
Правильным уровнем сравнения здесь является дата, поэтому "DocDate" также необходимо преобразовать в тип данных без учета часов date
.
p.s. Я только что понял, что критерии выбора даны в формате MM/DD/YYYY
, что, вероятно, является причиной ошибки преобразования, которую OP получил ранее.
person
Lars Br.
schedule
04.03.2020
try like Between to_date('01-01-2020','MM-DD-YYYY')
- person shalini   schedule 03.03.2020date
или столбец строкиVARCHAR
, в котором просто хранится дата? - person Lars Br.   schedule 03.03.2020'MM/DD/YYYY'
- person shalini   schedule 05.03.2020