Retour à la liste des articles Articles
11 minutes de lecture

Fonctions de date de PostgreSQL

Comprendre les fonctions de date et d'heure dans votre base de données est essentiel pour une analyse efficace des données et la création de rapports. Lisez la suite pour en savoir plus sur les fonctions de date de PostgreSQL.

Cet article présente quelques-unes des fonctions de date et d'heure les plus utiles de PostgreSQL et leurs applications dans l'analyse des données et la création de rapports. Les fonctions de date SQL facilitent différentes tâches d'analyse de données, y compris l'analyse des ventes, les rapports financiers, l'analyse de sites Web, etc.

Cet article vous présente les outils, sous la forme de fonctions de date et d'heure PostgreSQL, utilisés pour accomplir ces tâches. Nous commencerons par une présentation rapide des types de données de date et d'heure disponibles dans PostgreSQL avant de passer aux fonctions.

Consultez notre livre de cuisine SQL, qui contient une variété de recettes SQL pour PostgreSQL et d'autres dialectes. Il s'agit d'une ressource précieuse qui mérite d'être mise en signet pour une référence rapide lors de l'écriture de vos requêtes. Vous pouvez en apprendre plus sur le concept d'un livre de cuisine SQL ici.

Types de données de date et d'heure dans PostgreSQL

Dans PostgreSQL, il y a plusieurs types de données disponibles pour stocker les valeurs de date et d'heure. Vous trouverez ci-dessous une vue d'ensemble des types les plus fréquemment utilisés :

Data TypeUsageFormatExample
DATEIt stores date values that include a year (YYYY), month (MM), and day (DD).YYYY-MM-DD2024-06-01
TIMEIt stores time values that include an hour (HH), minute (MM), and second (SS).HH:MM:SS12:30:15
TIMESTAMPIt stores date and time values.YYYY-MM-DD HH:MM:SS2024-07-30 12:30:15
INTERVALIt stores an interval between two date/time values or an interval that can be added to or subtracted from a date/time value.INTERVAL 'x YEAR x MONTH x DAY x HOUR x MINUTE x SECOND'INTERVAL '2 YEARS 1 MONTH 3 DAYS 4 HOURS 1 MINUTE'

Pour les analyses de données qui doivent prendre en compte différents fuseaux horaires, PostgreSQL propose des types de données comme TIME WITH TIME ZONE (qui stocke les valeurs de l'heure avec les informations sur le fuseau horaire) et TIMESTAMP WITH TIME ZONE (qui stocke les valeurs de la date et de l'heure avec les informations sur le fuseau horaire).

Lisez notre article Un aperçu des types de données PostgreSQL pour en savoir plus sur les types de données disponibles dans PostgreSQL. Et si vous voulez vous entraîner davantage, consultez ces 19 exercices sur PostgreSQL avec des solutions détaillées.

Nous utiliserons tous les types de données mentionnés ci-dessus en explorant les fonctions de date et d'heure de PostgreSQL. C'est parti !

Vue d'ensemble des fonctions de date et d'heure dans PostgreSQL

Toutes les fonctions de date et d'heure e dans PostgreSQL peuvent être regroupées dans les catégories suivantes :

  • Comparer les valeurs de la date et de l'heure
  • Obtenir les valeurs actuelles de la date et de l'heure
  • Effectuer des opérations arithmétiques sur les valeurs de la date et de l'heure
  • Manipulation des valeurs de date et d'heure
  • Formatage des valeurs de date et d'heure

Les sections suivantes énumèrent toutes les fonctions pertinentes, accompagnées d'exemples.

Voici le tableau sales que nous utiliserons pour nos exemples :

sale_idsale_datesale_timesale_timestampshop_nameproduct_nameamount_sold
12024-06-0108:00:002024-06-01 08:00:00GreenGrocerApples100
22024-06-0110:30:002024-06-01 10:30:00GreenGrocerBananas150
32024-06-0111:45:002024-06-01 11:45:00GreenGrocerOranges200
42024-06-0109:15:002024-06-01 09:15:00SuperMartCharger6
52024-06-0113:20:002024-06-01 13:20:00SuperMartHeadphones9
62024-06-0114:45:002024-06-01 14:45:00SuperMartLaptop11
72024-06-0110:00:002024-06-01 10:00:00MegaMallKeyboard5
82024-06-0111:30:002024-06-01 11:30:00MegaMallMouse8
92024-06-0112:45:002024-06-01 12:45:00MegaMallMonitor10
102024-06-0113:30:002024-06-01 13:30:00MegaMallPrinter6

Comparaison des valeurs de date et d'heure

Pour comparer les valeurs de date et d'heure dans PostgreSQL, nous utilisons les opérateurs de comparaison standards. Ces opérateurs incluent =, !=, <>, >, >=, <, <=, BETWEEN, et NOT BETWEEN.

Vous trouverez ci-dessous des exemples d'utilisation pour chaque opérateur de comparaison.

Opérateur égal (=)

Question : Combien de ventes ont eu lieu le 1er juin 2024 ?

Réponse :

SELECT COUNT(*) AS count
FROM sales
WHERE sale_date = '2024-06-01';
count
10

Opérateur de différence (!= ou <>)

Question : Combien de ventes n'ont pas eu lieu à 10:00:00 ? Combien de ventes n'ont pas eu lieu à 10:00:00 ?

Réponse :

SELECT COUNT(*) AS count
FROM sales
WHERE sale_time != '10:00:00';
count
9

Opérateur Greater Than (>)

Question : Combien de ventes ont eu lieu après le 1er juin 2024 ? Combien de ventes ont eu lieu après le 1er juin 2024, à 10:00:00 ?

Réponse :

SELECT COUNT(*) AS count
FROM sales
WHERE sale_timestamp > '2024-06-01 10:00:00';
count
6

Remarque : Lors de la comparaison de dates en SQL, l'opérateur > signifie que si la date X est supérieure à la date Y, la date X est plus éloignée dans le futur (plus tardive) que la date Y.

Opérateur plus grand que ou égal (>=)

Question : Combien de ventes ont eu lieu le 1er juin 2024 à 10:00:00 ou après ?

Réponse :

SELECT COUNT(*) AS count
FROM sales
WHERE sale_timestamp >= '2024-06-01 10:00:00';
count
7

Remarque : Lorsque l'on compare des dates en SQL, l'opérateur >= signifie que si la date X est supérieure ou égale à la date Y, la date X est plus éloignée dans le futur (plus tardive) que la date Y ou égale à celle-ci.

Opérateur Less Than (<)

Question : Combien de ventes ont eu lieu avant 12:00:00 le 1er juin 2024 ?

Réponse :

SELECT COUNT(*) AS count
FROM sales
WHERE sale_timestamp < '2024-06-01 12:00:00';
count
7

Remarque : Lorsque l'on compare des dates en SQL, l'opérateur < signifie que si la date X est inférieure à la date Y, X est antérieure à Y.

Opérateur "inférieur ou égal" (<=)

Question : Combien de ventes ont eu lieu le ou avant le 1er juin 2024 à 12:00:00 ?

Réponse :

SELECT COUNT(*) AS count
FROM sales
WHERE sale_timestamp <= '2024-06-01 12:00:00';
count
7

Remarque : Lors de la comparaison de dates ou d'heures en SQL, l'opérateur <= signifie que si la date X est inférieure ou égale à la date Y, la date X est antérieure ou égale à la date Y.

Opérateur BETWEEN

Question : Combien de ventes ont eu lieu entre 10:00:00 et 14:00:00 ?

Réponse :

SELECT COUNT(*) AS count
FROM sales
WHERE sale_timestamp BETWEEN '2024-06-01 10:00:00'
AND '2024-06-01 14:00:00';
count
6

Opérateur NOT BETWEEN

Question : Combien de ventes n'ont pas eu lieu entre 10:00:00 et 14:00:00 ? Combien de ventes n'ont pas eu lieu entre 10:00:00 et 14:00:00 ?

Réponse :

SELECT COUNT(*) AS count
FROM sales
WHERE sale_timestamp NOT BETWEEN '2024-06-01 10:00:00'
AND '2024-06-01 14:00:00';
count
4

Bon à savoir : Vous pouvez trier les résultats par date, heure ou horodatage en incluant simplement la colonne correspondante dans la clause ORDER BY.

Consultez ces livres de recettes pour en savoir plus :

Obtention des valeurs actuelles de la date et de l'heure

Lors de l'analyse des données, nous voulons souvent les comparer avec l'heure actuelle à chaque fois que la requête est exécutée. Dans PostgreSQL, cela peut être réalisé avec la fonction NOW() et les mots-clés CURRENT_DATE, CURRENT_TIME, et CURRENT_TIMESTAMP.

Important : la fonction NOW() est spécifique à PostgreSQL, alors que les fonctions CURRENT_* sont fournies dans le langage SQL standard et sont recommandées pour une utilisation plutôt que la fonction NOW().

NOW()

Cette fonction permet de sélectionner la date et l'heure actuelles ainsi que le fuseau horaire.

SELECT NOW();
now
2024-06-09 17:00:55.732 +0200

DATE_COURANTE

Utilisez ce mot-clé pour sélectionner la date du jour.

SELECT CURRENT_DATE;
current_date
2024-06-09

CURRENT_TIME

Utilisez ce mot-clé pour sélectionner l'heure actuelle avec le fuseau horaire (mais sans la date).

SELECT CURRENT_TIME;
current_time
17:03:50 +0200

CURRENT_TIMESTAMP

Utilisez cette fonction pour sélectionner la date et l'heure actuelles ainsi que le fuseau horaire.

SELECT CURRENT_TIMESTAMP;
current_timestamp
2024-06-09 17:05:45.854 +0200

Consultez ces livres de recettes pour en savoir plus :

Opérations arithmétiques sur les valeurs de la date et de l'heure

Les opérations arithmétiques sur les valeurs de date et d'heure dans PostgreSQL incluent le calcul de la différence entre deux dates et l'ajout ou la soustraction de INTERVALs aux valeurs de date et d'heure.

Suivez les exemples d'utilisation ci-dessous pour :

Calculer la différence entre deux valeurs de date en utilisant la fonction AGE().

SELECT AGE(sale_date, CURRENT_DATE) AS age_difference
FROM sales
WHERE product_name = 'Apples';
age_difference
-8 days

Notez que cette fonction renvoie l'INTERVALLE entre deux valeurs.

Calculer la différence entre deux valeurs de date à l'aide de l'opérateur moins (-).

SELECT sale_timestamp - CURRENT_TIMESTAMP AS difference
FROM sales
WHERE product_name = 'Apples';
difference
-8 days -09:56:38.387095

Notez que cette fonction renvoie un intervalle entre deux valeurs, comme le ferait la fonction age().

Calculer la différence entre deux valeurs de temps à l'aide de l'opérateur moins (-).

SELECT sale_time, sale_time - '09:00:00' AS difference
FROM sales
WHERE product_name = 'Apples';
sale_timedifference
08:00:00-01:00:00

Ajoutez des INTERVALLES.

Utilisez l'opérateur plus (+) pour ajouter un INTERVAL à une valeur de date ou d'heure :

SELECT sale_date + INTERVAL '1 day' AS next_day
FROM sales
WHERE product_name = 'Apples';
next_day
2024-06-02 00:00:00.000

Soustraire des INTERVALLES.

Utilisez l'opérateur moins (-) pour soustraire un INTERVAL d'une valeur de date/heure.

SELECT sale_date - INTERVAL '1 week' AS previous_week
FROM sales
WHERE product_name = 'Apples';
previous_week
2024-05-25 00:00:00.000

Consultez ces livres de recettes pour en savoir plus :

Manipulation des valeurs de date et d'heure

PostgreSQL fournit des fonctions qui facilitent l'extraction de parties spécifiques de valeurs de date et d'heure, telles que DATE_PART(), DATE_TRUNC(), et EXTRACT(). Dans l'analyse de données, ces fonctions sont couramment utilisées pour grouper les données par jour, mois ou année - permettant ainsi la création de rapports avec des statistiques sur des périodes de temps définies.

DATE_PART()

Cette fonction permet d'extraire un composant spécifique (par exemple, l'année, le mois ou le jour) d'une valeur de date ou d'heure.

SELECT DATE_PART('year', sale_date) AS sale_year
FROM sales
WHERE product_name = 'Apples';
sale_year
2024

EXTRACT()

Elle extrait une partie spécifique (par exemple, l'année, le mois ou le jour) d'une valeur date/heure.

SELECT EXTRACT(YEAR FROM sale_date) AS sale_year
FROM sales
WHERE product_name = 'Apples';
sale_year
2024

La fonction EXTRACT() peut être utilisée de manière interchangeable avec la fonction DATE_PART(). Cependant, EXTRACT() peut gérer les fuseaux horaires.

DATE_TRUNC()

Elle tronque une valeur de date/heure à l'unité spécifiée (par exemple, l'année, le mois ou le jour).

SELECT DATE_TRUNC('year', sale_date) AS year_start
FROM sales
WHERE product_name = 'Apples';
year_start
2024-01-01 00:00:00.000 +0100

MAKE_DATE()

Assemble une date complète à partir d'une année, d'un mois et d'un jour.

SELECT MAKE_DATE('2024', '6', '1') AS date;
date
2024-06-01

GENERATE_SERIES()

Cette fonction génère une série de valeurs de date et d'heure à intervalles égaux.

SELECT GENERATE_SERIES(
	   '2024-06-01 08:00:00'::timestamp, 
	   '2024-06-01 09:00:00'::timestamp, 
	   '20 minutes'::interval
             ) AS generated_timestamp;
generated_timestamp
2024-06-01 08:00:00.000
2024-06-01 08:20:00.000
2024-06-01 08:40:00.000
2024-06-01 09:00:00.000

Consultez ces livres de recettes pour en savoir plus :

Formatage des valeurs de date et d'heure

PostgreSQL offre plusieurs fonctions de formatage qui facilitent la lecture de vos rapports. Ces fonctions comprennent TO_CHAR(), TO_DATE(), et TO_TIMESTAMP().

TO_CHAR()

Elle convertit une valeur de date/heure en une chaîne formatée selon un format spécifié.

SELECT TO_CHAR(sale_date, 'MM/DD/YYYY') AS formatted_date
FROM sales
WHERE product_name = 'Apples';
SELECT TO_CHAR(sale_date, 'MM/DD/YYYY') AS formatted_date
FROM sales
WHERE product_name = 'Apples';
formatted_date
06/01/2024

Consultez les formats de date et d'heure fournis par PostgreSQL ici.

TO_DATE()

Convertit une chaîne de caractères en une valeur de date selon un format spécifié.

SELECT TO_DATE('2024-06-01', 'YYYY-MM-DD') AS date_value;
date_value
2024-06-01

TO_TIMESTAMP()

Convertit une chaîne de caractères en une valeur d'horodatage selon un format spécifié.

SELECT TO_TIMESTAMP('2024-06-01 08:00:00', 'YYYY-MM-DD HH24:MI:SS')
AS timestamp_value;
timestamp_value
2024-06-01 08:00:00.000 +0200

Consultez ces livres de recettes pour en savoir plus :

Travailler avec les fonctions de date et d'heure de PostgreSQL

Les fonctions de date et d'heure proposées par PostgreSQL sont des outils essentiels pour l'analyse des données et la création de rapports. Elles peuvent nous aider à comprendre les modèles de données dans le temps, comme les tendances des ventes ou les pics de trafic sur le site Web. Grâce à ces fonctions, nous pouvons regrouper les données par jour, par mois ou par année, ce qui facilite la détection des tendances et la prise de décisions éclairées. De plus, elles nous aident à formater nos rapports, ce qui les rend plus faciles à lire et à comprendre.

Comme les données sont souvent stockées dans différentes bases de données ou fichiers, vous pouvez importer vos données au format CSV dans PostgreSQL pour un traitement ultérieur.


Si vous avez besoin d'un rappel pratique sur les fonctions SQL, consultez notre feuille de contrôle gratuite Fonctions SQL standards. Vous pouvez la télécharger, l'imprimer et la garder à portée de main pendant que vous travaillez et apprenez.

Si vous souhaitez consolider vos connaissances de PostgreSQL, consultez notre cours complet SQL from A to Z in PostgreSQL. Il propose des centaines d'exercices pour vous apprendre tout ce que vous devez savoir pour devenir un pro de Postgres - y compris des concepts avancés comme les fonctions de fenêtre, les requêtes récursives et PostGIS. Bon apprentissage !