Ambas soluciones incluyen el último día del mes anterior y también incluir todo "hoy".
Para una date
columna:
SELECT *
FROM tbl
WHERE my_date BETWEEN date_trunc('month', now())::date - 1
AND now()::date
Puede restar valores enteros simples de una date
(pero no de una timestamp
) para restar días. Esta es la forma más sencilla y rápida.
Para una timestamp
columna:
SELECT *
FROM tbl
WHERE my_timestamp >= date_trunc('month', now()) - interval '1 day'
AND my_timestamp < date_trunc('day' , now()) + interval '1 day'
Tenga en cuenta que uso el <
operador para la segunda condición para obtener resultados precisos (~ "antes de mañana").
No envío a date
en la segunda consulta. En su lugar, agrego un interval '1 day'
, para evitar lanzar de un lado a otro.
Eche un vistazo a los tipos y funciones de fecha/hora en el manual.