XamSQL — la salle de sport SQL des francophones

Avancé · 20 min

Fonctions de chaînes et de dates : préparer un rapport lisible

Concaténer, mesurer et transformer du texte ; extraire année/mois et calculer une différence entre deux dates.

Contexte

Un nom de client vient rarement déjà « prêt à afficher » : il faut souvent le recomposer, et une date brute (2026-03-12) doit devenir une année, un mois, ou un nombre de jours écoulés pour être utile dans un rapport.

Explication

Chaînes (portable entre SGBD à quelques variantes près) :

Dates (SQLite ; l'idée se retrouve partout, la syntaxe varie) :

SELECT strftime('%Y', col1) AS annee FROM une_table;
SELECT julianday(col1) - julianday(col2) AS jours FROM une_table;

Exemple guidé

Regrouper les commandes par mois (base boutique) :

SELECT strftime('%Y-%m', date_commande) AS mois, COUNT(*) AS nb_commandes
FROM commandes
GROUP BY mois
ORDER BY mois
LIMIT 6;

Le format AAAA-MM a une propriété précieuse : le trier comme du texte revient à le trier chronologiquement, sans avoir besoin de reconstruire une vraie date. Pour un délai (par exemple entre une commande et son paiement), on soustrait deux julianday et on caste en entier pour obtenir un nombre de jours propre.

À retenir

|| concatène, LENGTH mesure. strftime('%Y', ...) ou ('%Y-%m', ...) extrait année/mois pour grouper proprement dans le temps. julianday(b) - julianday(a) donne un nombre de jours entre deux dates ; CAST ... AS INTEGER nettoie le résultat.

Exercices de cette leçon

Faire les exercices →