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.