Leçon 1 / 9 — Chapitre 2: Fonctions date approfondies
Fonctions date
Les dates suivent aussi des fonctions dédiées, même si leur syntaxe exacte varie selon le moteur SQL (EXTRACT, standard SQL, utilisé ici ; SQLite propose strftime, MySQL propose YEAR()/MONTH() — le principe reste identique).
SELECT EXTRACT(YEAR FROM date_inscription) FROM clients WHERE id = 1;
→ 2024.
SELECT date_inscription FROM clients WHERE id IN (1, 6);
donne le 15 mars 2024 (id 1) et le 20 mai 2024 (id 6) — la différence entre ces deux dates se calcule en jours :
16 jours restants en mars (31-15) + 30 jours en avril + 20 jours en mai = 66 jours.
Ajouter une durée fonctionne dans l'autre sens : 15 mars 2024 + 30 jours = 16 jours pour finir mars, puis 14 jours en avril = 14 avril 2024.
À retenir :
EXTRACT(YEAR FROM colonne)/EXTRACT(MONTH FROM colonne)isolent l'année ou le mois d'une date.- La différence entre deux dates se calcule en jours ; toujours utiliser des dates littérales fixes pour un résultat prévisible — jamais
CURRENT_DATE, dont le résultat change chaque jour. - Ajouter/soustraire une durée à une date suit le même calendrier (nombre de jours par mois).
À vous de jouer : calculez combien de jours séparent le 2 avril 2024 (id=2) et le 20 mai 2024 (id=6).
À vous de jouer
À faireVoici une table clients :
clients
id | nom | email | date_inscription | montant | statut
1 | Emma | emma@mail.com | 2024-03-15 | 120.456 | actif
2 | LUCAS | lucas@mail.com | 2024-04-02 | 85.2 | actif
3 | Nina | (NULL) | 2024-04-02 | 200 | inactif
4 | noé | noe@mail.com | (NULL) | 60.75 | actif
5 | Emma | emma@mail.com | 2024-03-15 | 120.456 | actif
6 | Sophie | sophie@mail.com | 2024-05-20 | -150 | inactif
Que retourne SELECT EXTRACT(YEAR FROM date_inscription) FROM clients WHERE id = 1; ?
Testez cette requête dans un bac à sable SQL en ligne (SQLite Fiddle, W3Schools "Try SQL", ou tout autre) pour vérifier le résultat avant de répondre.
💡 Une année (4 chiffres).
À vous de jouer
À faireVoici une table clients :
clients
id | nom | email | date_inscription | montant | statut
1 | Emma | emma@mail.com | 2024-03-15 | 120.456 | actif
2 | LUCAS | lucas@mail.com | 2024-04-02 | 85.2 | actif
3 | Nina | (NULL) | 2024-04-02 | 200 | inactif
4 | noé | noe@mail.com | (NULL) | 60.75 | actif
5 | Emma | emma@mail.com | 2024-03-15 | 120.456 | actif
6 | Sophie | sophie@mail.com | 2024-05-20 | -150 | inactif
Combien de jours séparent le 15 mars 2024 (date_inscription du client id=1) et le 20 mai 2024 (date_inscription du client id=6) ?
Testez cette requête dans un bac à sable SQL en ligne (SQLite Fiddle, W3Schools "Try SQL", ou tout autre) pour vérifier le résultat avant de répondre.
💡 Un nombre de jours.
À vous de jouer
À faireQuelle date obtient-on en ajoutant 30 jours au 15 mars 2024 (2024-03-15) ?
Testez cette requête dans un bac à sable SQL en ligne (SQLite Fiddle, W3Schools "Try SQL", ou tout autre) pour vérifier le résultat avant de répondre.
💡 Une date au format AAAA-MM-JJ.