Skip to content

5.1 — Gestion des dates

Ce que vous apprendrez

  • Comment filtrer et formater les dates en SQL
  • Fonctions et comparaisons de dates courantes
  • Comparaison avec la gestion des dates dans Excel

Travailler avec les dates en SQL

Voici les données de vente que nous allons utiliser dans nos exemples :

ProductAmountSaleDate
Apples1202024-05-01
Apples902024-05-15
Oranges802024-05-03
Oranges702024-06-10
Bananas602024-05-20
Bananas502024-06-05
Pears402024-05-25
Pears302024-06-15

Dans Excel, vous pourriez utiliser des filtres ou des fonctions comme YEAR(), MONTH() ou un formatage de date personnalisé. SQL fournit des fonctions similaires et vous permet de filtrer par plage de dates.

Exemple : Filtrer les ventes de mai 2024

sql
SELECT *
FROM sales
WHERE SaleDate >= Date '2024-05-01' AND SaleDate <= Date '2024-05-31';

Exemple : Extraire l'année et le mois

sql
SELECT SaleDate, YEAR(SaleDate) AS SaleYear, MONTH(SaleDate) AS SaleMonth
FROM sales;
  • Les fonctions comme Date, YEAR(), MONTH() et DAY() fonctionnent dans la plupart des bases de données (la syntaxe peut varier).

Regroupement par mois ou année

Vous pouvez regrouper les données par mois ou année pour analyser les tendances :

sql
SELECT YEAR(SaleDate) AS SaleYear, MONTH(SaleDate) AS SaleMonth, SUM(Amount) AS TotalSales
FROM sales
GROUP BY YEAR(SaleDate), MONTH(SaleDate)
ORDER BY SaleYear, SaleMonth;

Formatage des dates

Certaines bases de données permettent de formater les dates pour l'affichage :

sql
SELECT DATE_FORMAT(SaleDate, '%Y-%m') AS YearMonth, SUM(Amount) AS Total
FROM sales
GROUP BY YearMonth;
-- PostgreSQL/Oracle/Teradata: TO_CHAR(SaleDate, 'YYYY-MM')
-- Snowflake: TO_VARCHAR(SaleDate, 'YYYY-MM')
-- Databricks (Spark SQL): DATE_FORMAT(SaleDate, 'yyyy-MM')

(La syntaxe peut varier : consultez la documentation de votre base de données pour plus de détails.)

Fonctions de date courantes par base de données

ObjectifPostgreSQL / Oracle / TeradataSQL ServerDatabricks (Spark SQL)Snowflake / BigQueryMySQL / MariaDB
Extraire l'annéeEXTRACT(YEAR FROM SaleDate) ou TO_CHAR(SaleDate, 'YYYY')YEAR(SaleDate)year(SaleDate)YEAR(SaleDate)YEAR(SaleDate)
Extraire le moisEXTRACT(MONTH FROM SaleDate) ou TO_CHAR(SaleDate, 'MM')MONTH(SaleDate)month(SaleDate)MONTH(SaleDate)MONTH(SaleDate)
Extraire le jourEXTRACT(DAY FROM SaleDate) ou TO_CHAR(SaleDate, 'DD')DAY(SaleDate)day(SaleDate)DAY(SaleDate)DAY(SaleDate)
Formater YYYY-MMTO_CHAR(SaleDate, 'YYYY-MM')FORMAT(SaleDate, 'yyyy-MM')date_format(SaleDate, 'yyyy-MM')TO_VARCHAR(SaleDate, 'YYYY-MM')DATE_FORMAT(SaleDate, '%Y-%m')
Ajouter des joursSaleDate + n (jours) ou ADD_DAYS(SaleDate, n)DATEADD(day, n, SaleDate)date_add(SaleDate, n)DATEADD(day, n, SaleDate)DATE_ADD(SaleDate, INTERVAL n DAY)
Date actuelleCURRENT_DATEGETDATE()current_date()CURRENT_DATE()CURDATE()

Note : La syntaxe peut varier légèrement selon la version de votre base de données. Consultez toujours la documentation de votre base de données pour plus de détails.

Calcul du nombre de jours entre deux dates

Vous pouvez calculer la différence en jours entre deux dates à l'aide de fonctions intégrées. C'est similaire à la soustraction de dates dans Excel.

Exemples :

Base de donnéesSyntaxe d'exemple
PostgreSQL / Oracle / TeradataSELECT EndDate - StartDate AS Jours_Diff FROM sales;
SQL ServerSELECT DATEDIFF(day, StartDate, EndDate) AS Jours_Diff FROM sales;
Databricks (Spark SQL)SELECT datediff(EndDate, StartDate) AS Jours_Diff FROM sales;
Snowflake / BigQuerySELECT DATEDIFF(day, StartDate, EndDate) AS Jours_Diff FROM sales;
MySQL / MariaDBSELECT DATEDIFF(EndDate, StartDate) AS Jours_Diff FROM sales;
  • Remplacez StartDate et EndDate par vos noms de colonnes réels.
  • Le résultat est le nombre de jours entre les deux dates.

Note : L'ordre des arguments peut différer dans certaines bases de données. Consultez toujours la documentation de votre base de données pour plus de détails.

Points clés

  • SQL peut filtrer, extraire et regrouper par dates, tout comme Excel.
  • Les fonctions et formats de date peuvent différer selon la base de données.

Prochaines étapes

Ensuite, vous apprendrez à gérer les valeurs manquantes (NULL) dans vos données.