Заказ от 2 августа не попал в выборку по BETWEEN: почему
Разбирая обращение, вы выполнили в DBeaver:
SELECT id, created_at, status
FROM orders
WHERE customer_id = 4821
AND created_at BETWEEN '2026-08-01' AND '2026-08-02';
Клиент утверждает, что оформил заказ 2 августа в 14:30. Заказы за 1 августа в выдаче есть, а этого нет. Поле created_at имеет тип timestamp.
В чём причина?
- BETWEEN не работает с типом timestamp: обе границы нужно заранее приводить к строке функцией to_char
- Заказа нет в базе: BETWEEN включает обе границы целиком, значит 2 августа охвачено полностью до конца суток, и искать надо в другом месте
- Без ORDER BY по created_at часть строк не возвращается, потому что порядок выдачи не определён
- Верхняя граница '2026-08-02' раскрывается как 2 августа 00:00, поэтому весь день 2 августа в выборку не попадает
