8th Jul 2024 11 minutes de lecture Fonctions de date de PostgreSQL Martyna Sławińska postgresql date and time functions Table des matières Types de données de date et d'heure dans PostgreSQL Vue d'ensemble des fonctions de date et d'heure dans PostgreSQL Comparaison des valeurs de date et d'heure Opérateur égal (=) Opérateur de différence (!= ou <>) Opérateur Greater Than (>) Opérateur plus grand que ou égal (>=) Opérateur Less Than (<) Opérateur "inférieur ou égal" (<=) Opérateur BETWEEN Opérateur NOT BETWEEN Obtention des valeurs actuelles de la date et de l'heure NOW() DATE_COURANTE CURRENT_TIME CURRENT_TIMESTAMP Opérations arithmétiques sur les valeurs de la date et de l'heure Manipulation des valeurs de date et d'heure DATE_PART() EXTRACT() DATE_TRUNC() MAKE_DATE() GENERATE_SERIES() Formatage des valeurs de date et d'heure TO_CHAR() TO_DATE() TO_TIMESTAMP() Travailler avec les fonctions de date et d'heure 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 : Comment comparer 2 dates dans la clause WHERE en SQL Comment comparer des valeurs de date en SQL Comment comparer des valeurs de date en SQL Comment ordonner par date dans PostgreSQL ou Oracle 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 : Comment obtenir la date courante dans PostgreSQL Comment obtenir l'heure courante dans PostgreSQL Comment obtenir la date et l'heure courantes (sans fuseau horaire) dans PostgreSQL Comment obtenir la date et l'heure courantes avec le décalage de fuseau horaire dans PostgreSQL Comment obtenir l'heure actuelle (sans fuseau horaire) dans PostgreSQL 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 : Comment calculer la différence de date dans PostgreSQL/Oracle Comment calculer la différence d'horodatage dans PostgreSQL Comment trouver l'intervalle entre deux dates dans PostgreSQL Comment obtenir la date d'hier dans PostgreSQL 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 : Comment grouper par mois dans PostgreSQL Comment grouper par année en SQL Comment extraire le numéro de semaine d'une date dans PostgreSQL Comment obtenir les noms des jours dans PostgreSQL Comment obtenir le jour de l'année à partir d'une date dans PostgreSQL Comment ordonner par nom de mois dans PostgreSQL ou Oracle Comment obtenir le mois précédent en SQL 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 : Comment formater une date dans PostgreSQL Comment convertir une chaîne en date dans PostgreSQL Comment convertir une chaîne en horodatage dans PostgreSQL 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 ! Tags: postgresql date and time functions