Нужно выбрать заказы за декабрь 2025 из таблицы заказов по полю created_at с временем. Какой фильтр надёжнее задаёт диапазон «весь месяц» без потерь по краям?

AWHERE created_at = '2025-12-01' OR created_at = '2025-12-31'
BWHERE created_at >= '2025-12-01' AND created_at < '2026-01-01'
CWHERE created_at > '2025-12-01' AND created_at < '2025-12-31'
DWHERE created_at <= '2025-12-31' AND created_at >= '2025-12-15'
Правильный ответ. Для «целого периода» удобно использовать полуинтервал: >= начало и < следующий период.

Разбор

Фильтр created_at >= '2025-12-01' AND created_at < '2026-01-01' захватывает все значения внутри декабря, включая время внутри дня (если created_at содержит время). Варианты с = или <= обычно либо слишком узкие, либо могут некорректно обработать время в конце дня. Вариант со строгими неравенствами теряет границы месяца — первое и последнее число.

Проверь себя · 1/3разбор после ответа
В запросе используется выражение: SELECT user_id, CASE WHEN age < 18 THEN 'подросток' WHEN age < 30 THEN 'молодой' WHEN age < 50 THEN 'средний' ELSE 'старший' END AS сегмент FROM users. Пользователю 25 лет — какое значение он получит и почему?
Тренировать SQL в Telegram

Ещё вопросы по теме «Основы SQL-запросов»