Оба решения включают последний день предыдущего месяца, а также включают все "сегодня".
Для столбца date
:
SELECT *
FROM tbl
WHERE my_date BETWEEN date_trunc('month', now())::date - 1
AND now()::date
Вы можете вычесть простые целочисленные значения из date
(но не из timestamp
), чтобы вычесть дни. Это самый простой и быстрый способ.
Для столбца timestamp
:
SELECT *
FROM tbl
WHERE my_timestamp >= date_trunc('month', now()) - interval '1 day'
AND my_timestamp < date_trunc('day' , now()) + interval '1 day'
Обратите внимание, что я использую оператор <
для второго условия, чтобы получить точные результаты (~ "до завтра").
Я не приведу к date
во втором запросе. Вместо этого я добавляю interval '1 day'
, чтобы не читать туда-сюда.
Ознакомьтесь с типами даты / времени и функций в руководстве.