PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Como determino o último dia do mês anterior usando o PostgreSQL?


Ambas as soluções incluem o último dia do mês anterior e também incluir tudo de "hoje".

Para uma date coluna:

SELECT *
FROM   tbl
WHERE  my_date BETWEEN date_trunc('month', now())::date - 1
               AND     now()::date

Você pode subtrair valores inteiros simples de uma date (mas não de um timestamp ) para subtrair dias. Esta é a maneira mais simples e rápida.

Para um timestamp coluna:

SELECT *
FROM   tbl
WHERE  my_timestamp >= date_trunc('month', now()) - interval '1 day'
AND    my_timestamp <  date_trunc('day'  , now()) + interval '1 day'

Observe que eu uso o < operador para a segunda condição para obter resultados precisos (~ "antes de amanhã").

Eu não transmito para date na segunda consulta. Em vez disso, adiciono um interval '1 day' , para evitar lançar para frente e para trás.

Dê uma olhada nos tipos e funções de data/hora no manual.