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;