Сверка за январь недосчитывает заказы последнего дня месяца
Вы сверяете число заказов за январь с отчётом сервиса. Колонка created_at имеет тип timestamp, время в ней хранится с точностью до секунды.
SELECT count(*) FROM orders
WHERE created_at BETWEEN '2026-01-01' AND '2026-01-31';
Запрос возвращает 12 480, отчёт сервиса — 12 655. Все недостающие заказы созданы 31 января.
В чём причина расхождения?
- Верхняя граница разворачивается в '2026-01-31 00:00:00', поэтому заказы 31 января, созданные после полуночи, в диапазон не попадают: границу задают как `created_at < '2026-02-01'`
- BETWEEN не включает границы диапазона, поэтому из выборки выпадают и первое, и последнее число месяца: включающий вариант пишется парой условий с >= и <=
- Сравнивать timestamp со строковым литералом нельзя: база молча отбрасывает строки, которые не смогла привести к типу даты, и нужен явный CAST обеих границ
- count(*) не учитывает строки, у которых есть NULL хотя бы в одной колонке, а у заказов 31 января ещё не заполнена дата доставки
