Oba rozwiązania zawierają ostatni dzień poprzedniego miesiąca, a także uwzględnij wszystkie „dzisiaj”.
Na date
kolumna:
SELECT *
FROM tbl
WHERE my_date BETWEEN date_trunc('month', now())::date - 1
AND now()::date
Możesz odjąć zwykłe wartości całkowite od date
(ale nie z timestamp
), aby odjąć dni. To najprostszy i najszybszy sposób.
Dla timestamp
kolumna:
SELECT *
FROM tbl
WHERE my_timestamp >= date_trunc('month', now()) - interval '1 day'
AND my_timestamp < date_trunc('day' , now()) + interval '1 day'
Zauważ, że używam <
operator drugiego warunku, aby uzyskać dokładne wyniki (~ „przed jutrem”).
Nie przesyłam na date
w drugim zapytaniu. Zamiast tego dodaję interval '1 day'
, aby uniknąć rzucania w tę i z powrotem.
Zapoznaj się z typami i funkcjami daty/czasu w instrukcji.