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.