Begge løsninger inkluderer den sidste dag i den foregående måned og også inkluder hele "i dag".
For en date
kolonne:
SELECT *
FROM tbl
WHERE my_date BETWEEN date_trunc('month', now())::date - 1
AND now()::date
Du kan trække almindelige heltalsværdier fra en date
(men ikke fra et timestamp
) for at trække dage fra. Dette er den enkleste og hurtigste måde.
For et timestamp
kolonne:
SELECT *
FROM tbl
WHERE my_timestamp >= date_trunc('month', now()) - interval '1 day'
AND my_timestamp < date_trunc('day' , now()) + interval '1 day'
Bemærk, at jeg bruger <
operatør for den anden betingelse for at få præcise resultater (~ "før i morgen").
Jeg caster ikke til date
i den anden forespørgsel. I stedet tilføjer jeg et interval '1 day'
, for at undgå at kaste frem og tilbage.
Se dato/klokkeslætstyper og funktioner i manualen.