Aller au contenu
Fonctions SQL

Fonctions date & heure

SQLite stocke les dates en texte ISO et fournit date(), strftime() et julianday() pour les calculer, les formater et les découper. Base des indicateurs par mois, des délais et des échéances.

  • DATE
  • datetime
  • strftime
  • julianday
  • date_trunc
  • EXTRACT

Syntaxe

Modèle
date(valeur, modificateur...)        -- 'AAAA-MM-JJ'datetime(valeur, modificateur...)    -- 'AAAA-MM-JJ HH:MM:SS'strftime('%Y-%m', valeur)            -- format librejulianday(fin) - julianday(debut)    -- écart en jours

Exemple

Exemple concret
SELECT strftime('%m', order_date) AS mois,       COUNT(*) AS nb_commandes,       MIN(order_date) AS premiereFROM ordersWHERE order_date >= '2024-01-01' AND order_date < '2025-01-01'GROUP BY moisORDER BY mois;-- Jeu de données : boutique-- Commandes de 2024, par mois-- Résultat attendu :-- 01 | 1 | 2024-01-15-- 02 | 1 | 2024-02-20-- 03 | 2 | 2024-03-10-- 04 | 1 | 2024-04-05

À retenir

  1. Modificateurs : date(order_date, '+30 days') pour une échéance, date(order_date, 'start of month') pour le premier jour du mois, '-1 month', 'weekday 1' pour le lundi suivant.
  2. Écart en jours : julianday('2024-03-25') - julianday('2024-01-15') vaut 70. Format français : strftime('%d/%m/%Y', order_date).
  3. Piège : date('now') dépend du jour d'exécution. Un filtre comme order_date >= date('now', '-30 days') ne renvoie plus rien sur des données de 2024. Fixez des bornes explicites pour un rapport reproductible.
  4. Piège : les dates ne se comparent et ne se trient correctement qu'au format ISO 'AAAA-MM-JJ'. Avec '15/01/2024', la comparaison de texte donne des résultats faux. strftime renvoie du texte ('03') : convertissez avec CAST(… AS INTEGER) pour calculer.
  5. Équivalents : EXTRACT(MONTH FROM d) et date_trunc('month', d) dans PostgreSQL, DATEPART(month, d) et DATEADD dans SQL Server.

Voir aussi