Поиск Последние 7 дней, кроме сегодняшнего дня Oracle SQL

У меня есть приведенный ниже код, в который я хочу вернуть последние 7 дней, кроме сегодняшнего дня (например, с 5 по 11 мая, а не с 5 по 12 мая)

Что еще я мог бы включить, чтобы достичь этого?

    SELECT * 
FROM TABLE_1
WHERE DATE_TIME >= SYSDATE -7

Обратите внимание, что SYSDATE имеет компонент времени суток, который не равен 00:00:00, если вы не запустите запрос в полночь. Вы почти наверняка хотите использовать TRUNC(SYSDATE) для всех своих вычислений — сравнивая с «сегодня» в 00:00:00, а не «сегодня» в любое время дня, когда вы запускаете запрос — правильно?

mathguy 12.05.2022 15:53
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
1
34
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Это должно работать:

    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.

Это неправильно, так как это также даст результаты завтра или в следующем году.

MT0 12.05.2022 15:42

Это почти работает, так как мне нужно примерно до 23:53 11 мая, однако для 5 мая он возвращает данные только с 14:47 (когда я запускал код), поэтому отсутствуют данные с 00:00 до 14: 46 5 мая. Потребуется небольшая модификация вашего кода.

Sc0719 12.05.2022 15:50

Сравнение с SYSDATE - 7, как это делал ОП, скорее всего, неверно с самого начала.

mathguy 12.05.2022 15:54

@ Sc0719 обновил ответ. Вместо этого измените предложение where на DATE_TIME >= TRUNC(SYSDATE) -7

Koen Lostrie 12.05.2022 16:47
Ответ принят как подходящий

Вы хотите иметь диапазон, который начинается за 7 дней до полуночи сегодня и заканчивается до полуночи сегодня:

SELECT *
FROM   table_name
WHERE  date_time >= TRUNC(sysdate) - 7
AND    date_time <  TRUNC(sysdate);

Другие вопросы по теме