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;