PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Come posso determinare l'ultimo giorno del mese precedente utilizzando PostgreSQL?

Entrambe le soluzioni includono l'ultimo giorno del mese precedente e anche include tutto "oggi".

Per una date colonna:

SELECT *
FROM   tbl
WHERE  my_date BETWEEN date_trunc('month', now())::date - 1
               AND     now()::date

Puoi sottrarre valori interi semplici da una date (ma non da un timestamp ) per sottrarre giorni. Questo è il modo più semplice e veloce.

Per un timestamp colonna:

SELECT *
FROM   tbl
WHERE  my_timestamp >= date_trunc('month', now()) - interval '1 day'
AND    my_timestamp <  date_trunc('day'  , now()) + interval '1 day'

Nota che utilizzo il < operatore per la seconda condizione per ottenere risultati precisi (~ "prima di domani").

Non trasmetto a date nella seconda domanda. Invece aggiungo un interval '1 day' , per evitare di lanciare avanti e indietro.

Dai un'occhiata ai tipi e alle funzioni di data/ora nel manuale.