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 :
Product | Amount | SaleDate |
---|---|---|
Apples | 120 | 2024-05-01 |
Apples | 90 | 2024-05-15 |
Oranges | 80 | 2024-05-03 |
Oranges | 70 | 2024-06-10 |
Bananas | 60 | 2024-05-20 |
Bananas | 50 | 2024-06-05 |
Pears | 40 | 2024-05-25 |
Pears | 30 | 2024-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
SELECT *
FROM sales
WHERE SaleDate >= Date '2024-05-01' AND SaleDate <= Date '2024-05-31';
Exemple : Extraire l'année et le mois
SELECT SaleDate, YEAR(SaleDate) AS SaleYear, MONTH(SaleDate) AS SaleMonth
FROM sales;
- Les fonctions comme
Date
,YEAR()
,MONTH()
etDAY()
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 :
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 :
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
Objectif | PostgreSQL / Oracle / Teradata | SQL Server | Databricks (Spark SQL) | Snowflake / BigQuery | MySQL / MariaDB |
---|---|---|---|---|---|
Extraire l'année | EXTRACT(YEAR FROM SaleDate) ou TO_CHAR(SaleDate, 'YYYY') | YEAR(SaleDate) | year(SaleDate) | YEAR(SaleDate) | YEAR(SaleDate) |
Extraire le mois | EXTRACT(MONTH FROM SaleDate) ou TO_CHAR(SaleDate, 'MM') | MONTH(SaleDate) | month(SaleDate) | MONTH(SaleDate) | MONTH(SaleDate) |
Extraire le jour | EXTRACT(DAY FROM SaleDate) ou TO_CHAR(SaleDate, 'DD') | DAY(SaleDate) | day(SaleDate) | DAY(SaleDate) | DAY(SaleDate) |
Formater YYYY-MM | TO_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 jours | SaleDate + 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 actuelle | CURRENT_DATE | GETDATE() | 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ées | Syntaxe d'exemple |
---|---|
PostgreSQL / Oracle / Teradata | SELECT EndDate - StartDate AS Jours_Diff FROM sales; |
SQL Server | SELECT DATEDIFF(day, StartDate, EndDate) AS Jours_Diff FROM sales; |
Databricks (Spark SQL) | SELECT datediff(EndDate, StartDate) AS Jours_Diff FROM sales; |
Snowflake / BigQuery | SELECT DATEDIFF(day, StartDate, EndDate) AS Jours_Diff FROM sales; |
MySQL / MariaDB | SELECT DATEDIFF(EndDate, StartDate) AS Jours_Diff FROM sales; |
- Remplacez
StartDate
etEndDate
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.