PaliSkill
SQL avancé

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

À faire

Voici 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

À faire

Voici 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

À faire

Quelle 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.

Quitter le module