Ваша первая ошибка - вызвать to_date () для значения, которое уже является DATE.to_date()
ожидает значение VARCHAR, поэтому sysdate
будет сначала преобразовано в VARCHAR, а затем немедленно преобразовано обратно в значение DATE, с которого оно должно было начинаться.
Вы, вероятно, хотите
AND CHECKER_DATE BETWEEN trunc(sysdate) - 1 AND trunc(sysdate)
Скорее всего, это все равно не даст вам желаемого результата, поскольку не включает строки из "сегодня".trunc(sysdate)
означает «сегодня в полночь», и любая строка, созданная сегодня после полуночи, не будет включена.Со значениями даты / времени (а тип Oracle DATE содержит время, несмотря на имя), лучше не использовать BETWEEN, а вместо этого использовать явные операторы диапазона:
AND CHECKER_DATE >= trunc(sysdate) - 1
AND CHECKER_DATE < trunc(sysdate) + 1
trunc(sysdate) + 1
завтра в полночь, поэтомулюбое значение, которое (строго) меньше, чем это «сегодня».
Все вышеперечисленное предполагает, что CHECKER_DATE
определяется как DATE
или TIMESTAMP