Я пытаюсь получить записи из таблицы ORACLE, которые имеют вчерашнюю дату в одном из столбцов. У меня есть работа, выполняющая ежедневный поиск ТОЛЬКО вчерашних записей.Поиск записей с предыдущего дня
NOTE ** столбец insert_date имеет тип date
Эти два SQL заявления у меня до сих пор:
SELECT distinct column1
FROM table1
WHERE flag = 'N'
AND insert_date BETWEEN TRUNC(CURRENT_DATE-1) AND TRUNC(CURRENT_DATE)
AND ipaddress IS NOT NULL
AND ipaddress <> '0.0.0.0';
и
SELECT distinct column1
FROM table1
WHERE flag = 'N'
AND insert_date
BETWEEN To_Timestamp(CONCAT (to_char(CURRENT_DATE-1),' 12:00:00 AM'))
AND To_Timestamp(Concat (to_char(CURRENT_DATE-1),' 11:59:59 PM'))
AND ipaddress IS NOT NULL
AND ipaddress <> '0.0.0.0';
Кажется, эти два SQL операторы производят одинаковый вывод. Тем не менее, я не являюсь экспертом в ORACLE, поэтому я хотел бы спросить сообщество, есть ли какие-либо «gotchas», о которых я не знаю.
похоже, что вы учли «gotcha» = - это то, что вы хотите, чтобы день начался в полночь - не один день назад (включая минуты) – Randy
Я надеялся использовать первый sql, так как выполняет намного быстрее на второй sql. Я предполагаю, что это потому, что есть раздел по диапазону в столбце insert_date –
просто мысль на другой части, но вместо того, чтобы дважды проверять ipaddress, как насчет nvl (ipaddress, '0.0.0.0') <> '0.0.0.0', если только конечно, есть проблемы с индексацией с этим для этого столбца. – Diver