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.