Problème :
Vous souhaitez afficher la date d'hier (sans l'heure) dans une base de données PostgreSQL.
Solution 1 :
SELECT current_date - INTEGER '1' AS yesterday_date;
En supposant qu'aujourd'hui soit le 2020-09-24, le résultat est :
date_hier |
---|
2020-09-23 |
Discussion :
Pour obtenir la date d'hier, vous devez soustraire un jour à la date d'aujourd'hui. Utilisez current_date
pour obtenir la date d'aujourd'hui. Notez que vous n'avez pas besoin de crochets à la fin de la current_date
une fonction. Dans PostgreSQL, vous pouvez soustraire ou ajouter n'importe quel nombre de jours en utilisant le INTEGER
mot-clé. Ici, puisque vous devez soustraire un jour, vous utilisez - INTEGER '1'
pour obtenir la date d'hier. Notez que le résultat de ce calcul a toujours le type de colonne date
.
Solution 2 :
SELECT (current_date - INTERVAL '1 day')::date AS yesterday_date;
En supposant qu'aujourd'hui soit le 2020-09-24, le résultat est :
date_hier |
---|
2020-09-23 |
Discussion :
Obtenez la date d'aujourd'hui en utilisant current_date
. Vous devez soustraire un intervalle d'un jour à la date actuelle. Pour ce faire, utilisez le INTERVAL
mot-clé, qui crée n'importe quel intervalle de temps/date que vous voulez (ici, '1 day'
, qui dans PostgreSQL équivaut à 24 heures). Soustraire INTERVAL '1 day'
à partir de la date d'aujourd'hui se traduira par une colonne formatée comme un horodatage, vous devez donc la convertir en date
. Le moyen le plus rapide de le faire dans PostgreSQL consiste à ajouter ::date
à l'expression entière (n'oubliez pas de mettre l'expression entre parenthèses).
Bien sûr, vous pouvez revenir en arrière par n'importe quel intervalle de temps tout aussi facilement. Voici un exemple :
SELECT (current_date - INTERVAL '3 months 10 days')::date;
Un INTERVAL
peut également être ajouté à une date. Donc, voici un moyen si vous voulez obtenir la date de demain :
SELECT (current_date + INTERVAL '1 day')::date AS tomorrow_date;