sql >> Base de Datos >  >> RDS >> PostgreSQL

¿Cómo determino el último día del mes anterior usando PostgreSQL?

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.