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

Come ottenere la data di ieri in PostgreSQL

Problema:

Vorresti visualizzare la data di ieri (senza ora) in un database PostgreSQL.

Soluzione 1:

SELECT current_date - INTEGER '1' AS yesterday_date;

Supponendo che oggi sia il 24-09-2020, il risultato è:

ieri_data
23-09-2020

Discussione:

Per ottenere la data di ieri, devi sottrarre un giorno dalla data di oggi. Usa current_date per ottenere la data di oggi. Nota che non hai bisogno di parentesi alla fine di current_date funzione. In PostgreSQL, puoi sottrarre o aggiungere qualsiasi numero di giorni usando INTEGER parola chiave. Qui, poiché devi sottrarre un giorno, usi - INTEGER '1' per ottenere la data di ieri. Tieni presente che il risultato di questo calcolo ha ancora il tipo di colonna date .

Soluzione 2:

SELECT (current_date - INTERVAL '1 day')::date AS yesterday_date;

Supponendo che oggi sia il 24-09-2020, il risultato è:

ieri_data
23-09-2020

Discussione:

Ottieni la data odierna utilizzando current_date . È necessario sottrarre un intervallo di un giorno dalla data corrente. Per fare ciò, usa il INTERVAL parola chiave, che crea qualsiasi intervallo di data/ora desiderato (qui, '1 day' , che in PostgreSQL equivale a 24 ore). Sottraendo INTERVAL '1 day' dalla data odierna risulterà in una colonna formattata come timestamp, quindi devi trasmetterla a date . Il modo più rapido per farlo in PostgreSQL è aggiungere ::date all'intera espressione (ricordarsi di racchiudere l'espressione tra parentesi).

Naturalmente, puoi tornare indietro di qualsiasi intervallo di tempo altrettanto facilmente. Ecco un esempio:

SELECT (current_date - INTERVAL '3 months 10 days')::date;

Un INTERVAL può anche essere aggiunto ad una data. Quindi, ecco un modo se vuoi ottenere la data di domani:

SELECT (current_date + INTERVAL '1 day')::date AS tomorrow_date;