Выбор ответа Middle SQL для аналитика обновлено

Граница периода по timestamp

Вопрос

Колонка created_at типа timestamp. Нужны заказы за март 2026. Какое условие надёжно?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: createdat = '2026-03-01' AND createdat < '2026-04-01'. BETWEEN включает границы, но '2026-03-31' это полночь 31 марта, и весь последний день, кроме полуночи, потеряется.

Варианты ответа

  1. created_at <= '2026-03-31'
  2. to_char(created_at, 'MM') = '03'
  3. created_at BETWEEN '2026-03-01' AND '2026-03-31'
  4. created_at >= '2026-03-01' AND created_at < '2026-04-01'правильный ответ

Разбор

BETWEEN включает границы, но '2026-03-31' это полночь 31 марта, и весь последний день, кроме полуночи, потеряется. Полуоткрытый интервал [1 марта, 1 апреля) работает для любых типов времени. Только верхняя граница захватывает всю историю до марта. to_char по месяцу возьмёт март всех лет и не использует индекс.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.