sql >> Database >  >> RDS >> PostgreSQL

Hoe bepaal ik de laatste dag van de vorige maand met PostgreSQL?

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.



  1. Active Data Guard Physical Standby instellen in RAC One Node Architecture - Deel 1

  2. MySQL opgeslagen procedure met parameters

  3. Parameter Snuiven Primer:

  4. Wat zijn SQL-beperkingen en de verschillende typen?