

Это должно работать:
SELECT *
FROM TABLE_1
WHERE DATE_TIME >= SYSDATE -7
AND TRUNC(DATE_TIME) != TRUNC(SYSDATE)
TRUNC необходим для удаления временной части столбца даты и sysdate.
Обратите внимание, что DATE_TIME >= SYSDATE -7 будет включать временную часть SYSDATE и вычесть 7 дней. Если вы запускаете запрос в 10:00, хотите ли вы также включить строки, которые имеют date_time = sysdate - 7 в 9:00? Если да, то лучше добавить туда же TRUNCDATE_TIME >= TRUNC(SYSDATE) -7.
Это неправильно, так как это также даст результаты завтра или в следующем году.
Это почти работает, так как мне нужно примерно до 23:53 11 мая, однако для 5 мая он возвращает данные только с 14:47 (когда я запускал код), поэтому отсутствуют данные с 00:00 до 14: 46 5 мая. Потребуется небольшая модификация вашего кода.
Сравнение с SYSDATE - 7, как это делал ОП, скорее всего, неверно с самого начала.
@ Sc0719 обновил ответ. Вместо этого измените предложение where на DATE_TIME >= TRUNC(SYSDATE) -7
Вы хотите иметь диапазон, который начинается за 7 дней до полуночи сегодня и заканчивается до полуночи сегодня:
SELECT *
FROM table_name
WHERE date_time >= TRUNC(sysdate) - 7
AND date_time < TRUNC(sysdate);
Обратите внимание, что SYSDATE имеет компонент времени суток, который не равен 00:00:00, если вы не запустите запрос в полночь. Вы почти наверняка хотите использовать TRUNC(SYSDATE) для всех своих вычислений — сравнивая с «сегодня» в 00:00:00, а не «сегодня» в любое время дня, когда вы запускаете запрос — правильно?