Beide oplossingen bevatten de laatste dag van de vorige maand en ook omvatten alles van "vandaag".
Voor een date
kolom:
SELECT *
FROM tbl
WHERE my_date BETWEEN date_trunc('month', now())::date - 1
AND now()::date
U kunt gewone gehele getallen aftrekken van een date
(maar niet van een timestamp
) om dagen af te trekken. Dit is de eenvoudigste en snelste manier.
Voor een timestamp
kolom:
SELECT *
FROM tbl
WHERE my_timestamp >= date_trunc('month', now()) - interval '1 day'
AND my_timestamp < date_trunc('day' , now()) + interval '1 day'
Merk op dat ik de <
. gebruik operator voor de tweede voorwaarde om nauwkeurige resultaten te krijgen (~ "vóór morgen").
Ik cast niet naar date
in de tweede vraag. In plaats daarvan voeg ik een interval '1 day'
. toe , om heen en weer te casten.
Bekijk de datum/tijd types en functies in de handleiding.