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
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 joursExemple
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
- 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.
- Écart en jours : julianday('2024-03-25') - julianday('2024-01-15') vaut 70. Format français : strftime('%d/%m/%Y', order_date).
- 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.
- 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.
- Équivalents : EXTRACT(MONTH FROM d) et date_trunc('month', d) dans PostgreSQL, DATEPART(month, d) et DATEADD dans SQL Server.
Voir aussi
- WHEREWHERE ne garde que les lignes qui vérifient une condition, avant tout regroupement. C'est le filtre de base pour cibler un client, une période, un statut ou une plage de valeurs.
- IN, BETWEEN, LIKEIN teste l'appartenance à une liste, BETWEEN un intervalle bornes comprises, LIKE un motif de texte avec jokers. Ces trois opérateurs raccourcissent les conditions répétitives de WHERE.
- CAST et types de donnéesCAST convertit une valeur d'un type à un autre, typeof() révèle le type réellement stocké. Dans SQLite, où le typage est souple, ils évitent les tris, comparaisons et divisions faussés.
- CTE récursive (WITH RECURSIVE)Une CTE récursive part d'un point de départ puis se rappelle elle-même pour avancer d'un niveau à chaque tour. Elle parcourt une hiérarchie complète ou génère une suite de dates.