В таблице events(created_at) нужно выбрать события за последние 7 дней с точностью до текущего момента (включая сегодняшние, ещё не завершённые сутки). Какое условие в WHERE корректнее?

AWHERE created_at >= current_timestamp - INTERVAL '7 days'
BWHERE created_at >= current_date - INTERVAL '7 days'
CWHERE DATE_TRUNC('day', created_at) >= current_timestamp - INTERVAL '7 days'
DWHERE created_at <= current_timestamp - INTERVAL '7 days'
Правильный ответ. Для скользящего окна «последние 7 дней до текущего момента» используют current_timestamp - INTERVAL '7 days'.

Разбор

current_timestamp возвращает момент с временем, поэтому created_at >= current_timestamp - INTERVAL '7 days' отбирает события за последние 7×24 часа. current_date обнуляет время до полуночи и подходит для календарных периодов («с начала дня семь дней назад»), но смещает границу окна. Вариант с DATE_TRUNC сравнивает день с моментом времени и теряет внутренний интервал. Условие <= берёт всё старше 7 дней, то есть зеркально неправильное окно.

Проверь себя · 1/3разбор после ответа
Для сравнения метрик по неделям нужно получить начало предыдущей недели. Какое выражение вернёт начало предыдущей недели относительно current_date?
Тренировать SQL в Telegram

Ещё вопросы по теме «Даты и время»