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;