Les fonctions SQL de manipulation de date

24 Sep 2019 24 Sep 2019 22121 vues ESSADDOUKI Mostafa 7 min de lecture

Les fonctions de date et heure en MySQL

Définition

En SQL, les dates sont parfois complexes pour les débutants, car lors de l'utilisation d'une base de données, le format de la date dans la table doit correspondre à la date d'entrée pour pouvoir l'insérer correctement.

Dans divers scénarios, au lieu de DATE, on utilise DATETIME (l'heure est également incluse avec la date).

Dans ce cours, nous allons présenter différentes fonctions de date par défaut dans MySQL.

Table échantillon - Conges

+------+------------+------------+-------------------+-----+
| Id_c | Date_debut | Date_fin   | Raison            | Emp |
+------+------------+------------+-------------------+-----+
|    1 | 2019-02-01 | 2019-02-15 | Voyage            |   1 |
|    2 | 2019-05-20 | 2019-06-03 | Maladie d'enfant  |   3 |
|    3 | 2019-09-01 | 2019-09-15 | Rentrée scolaire  |   4 |
|    4 | 2019-09-24 | 2019-09-29 | Voyage            |   2 |
|    5 | 2019-09-19 | 2019-09-24 | Soutenance        |   5 |
+------+------------+------------+-------------------+-----+

1. Fonction NOW()

Description

La fonction NOW() renvoie la date et l'heure actuelles sous forme de valeur au format 'AAAA-MM-JJ HH:MM:SS' ou YYYYMMDDHHMMSS, selon que la fonction est utilisée dans un contexte de chaîne ou numérique.

La valeur est exprimée dans le fuseau horaire actuel.

  Exemple n°1

SELECT NOW();
Résultat
+---------------------+
| NOW()               |
+---------------------+
| 2019-09-24 13:48:18 |
+---------------------+

2. Fonction CURDATE()

Description

La fonction CURDATE() renvoie la date actuelle sous forme de valeur au format 'AAAA-MM-JJ' ou AAAAMMJJ, selon que la fonction est utilisée dans un contexte de chaîne ou numérique.

  Exemple n°2

SELECT CURDATE();
Résultat
+------------+
| CURDATE()  |
+------------+
| 2019-09-24 |
+------------+

3. Fonction CURTIME()

Description

La fonction CURTIME() renvoie l'heure actuelle sous forme de valeur au format 'HH:MM:SS' ou HHMMSS, selon que la fonction est utilisée dans un contexte de chaîne ou numérique.

La valeur est exprimée dans le fuseau horaire actuel.

  Exemple n°3

SELECT CURTIME();
Résultat
+-----------+
| CURTIME() |
+-----------+
| 13:59:00  |
+-----------+

4. Fonction DATE()

Description

La fonction DATE() extrait la partie date d'une expression DATETIME.

  Exemple n°4

SELECT DATE('2019-09-24 13:59:03');
Résultat
+-----------------------------+
| DATE('2019-09-24 13:59:03') |
+-----------------------------+
| 2019-09-24                  |
+-----------------------------+

  Exemple n°5

SELECT DATE(Date_debut) FROM Conges;
Résultat
+------------------+
| DATE(Date_debut) |
+------------------+
| 2019-02-01       |
| 2019-05-20       |
| 2019-09-01       |
| 2019-09-24       |
| 2019-09-19       |
+------------------+

5. Fonction EXTRACT()

Description

La fonction EXTRACT(unit FROM date) renvoie une seule partie d'une date/heure.

Plusieurs unités peuvent être utilisées, notamment : MICROSECOND, SECOND, MINUTE, HOUR, DAY, WEEK, MONTH, QUARTER, YEAR, etc.

  Exemple n°6

SELECT EXTRACT(DAY FROM Date_debut) as "Jour", 
       EXTRACT(MONTH FROM Date_debut) as "Mois", 
       EXTRACT(YEAR FROM Date_debut) as "Année" 
FROM Conges;
Résultat
+------+------+--------+
| Jour | Mois | Année  |
+------+------+--------+
|    1 |    2 |   2019 |
|   20 |    5 |   2019 |
|    1 |    9 |   2019 |
|   24 |    9 |   2019 |
|   19 |    9 |   2019 |
+------+------+--------+

6. Fonction DATE_ADD()

Description

La fonction DATE_ADD(date, INTERVAL expr type) ajoute un intervalle de temps spécifié à une date.

Les types possibles incluent : MICROSECOND, SECOND, MINUTE, HOUR, DAY, WEEK, MONTH, QUARTER, YEAR, etc.

  Exemple n°7

SELECT DATE_ADD(Date_debut, INTERVAL 1 YEAR) FROM Conges;
Résultat
+---------------------------------------+
| DATE_ADD(Date_debut, INTERVAL 1 YEAR) |
+---------------------------------------+
| 2020-02-01                            |
| 2020-05-20                            |
| 2020-09-01                            |
| 2020-09-24                            |
| 2020-09-19                            |
+---------------------------------------+

  Exemple n°8

SELECT DATE_ADD(Date_debut, INTERVAL 3 MONTH) FROM Conges;
Résultat
+----------------------------------------+
| DATE_ADD(Date_debut, INTERVAL 3 MONTH) |
+----------------------------------------+
| 2019-05-01                             |
| 2019-08-20                             |
| 2019-12-01                             |
| 2019-12-24                             |
| 2019-12-19                             |
+----------------------------------------+

7. Fonction DATE_SUB()

Description

La fonction DATE_SUB(date, INTERVAL expr type) soustrait un intervalle de temps spécifié à une date.

  Exemple n°9

SELECT DATE_SUB(Date_debut, INTERVAL 3 MONTH) FROM Conges;
Résultat
+----------------------------------------+
| DATE_SUB(Date_debut, INTERVAL 3 MONTH) |
+----------------------------------------+
| 2018-11-01                             |
| 2019-02-20                             |
| 2019-06-01                             |
| 2019-06-24                             |
| 2019-06-19                             |
+----------------------------------------+

8. Fonction DATEDIFF()

Description

La fonction DATEDIFF(date1, date2) renvoie date1 - date2 sous forme de valeur en jours.

Seules les parties date des valeurs sont utilisées dans le calcul (l'heure est ignorée).

  Exemple n°10

SELECT DATEDIFF(NOW(), Date_debut) AS "Nombre jours passés" FROM Conges;
Résultat
+----------------------+
| Nombre jours passés  |
+----------------------+
|                  235 |
|                  127 |
|                   23 |
|                    0 |
|                    5 |
+----------------------+

9. Fonctions YEAR(), MONTH() et DAY()

Description

Ces fonctions sont utilisées pour extraire respectivement l'année, le mois et le jour d'une date.

  Exemple n°11

SELECT YEAR(Date_debut), MONTH(Date_debut), DAY(Date_debut) FROM Conges;
Résultat
+------------------+-------------------+-----------------+
| YEAR(Date_debut) | MONTH(Date_debut) | DAY(Date_debut) |
+------------------+-------------------+-----------------+
|             2019 |                 2 |               1 |
|             2019 |                 5 |              20 |
|             2019 |                 9 |               1 |
|             2019 |                 9 |              24 |
|             2019 |                 9 |              19 |
+------------------+-------------------+-----------------+

Récapitulatif des fonctions

FonctionDescriptionExemple de résultat
NOW()Date et heure actuelles2019-09-24 13:48:18
CURDATE()Date actuelle2019-09-24
CURTIME()Heure actuelle13:59:00
DATE()Extrait la partie date d'un DATETIME2019-09-24
EXTRACT()Extrait une unité spécifique (jour, mois, année, etc.)24, 9, 2019
DATE_ADD()Ajoute un intervalle à une date2020-09-24
DATE_SUB()Soustrait un intervalle d'une date2018-11-01
DATEDIFF()Différence en jours entre deux dates235
YEAR()Extrait l'année2019
MONTH()Extrait le mois9
DAY()Extrait le jour24
 Exercice pratique

Requêtes sur la table Conges

 Niveau : Débutant

En utilisant la table Conges présentée plus haut, écrivez les requêtes SQL pour :

  1. Afficher le jour, le mois et l'année de chaque date de début.
  2. Afficher la date de début, la date de fin et le nombre de jours de chaque congé.
  3. Afficher les dates de début qui tombent en septembre 2019.
  4. Afficher les dates de début après ajout de 7 jours.
Points clés à retenir
  • Les fonctions de date en MySQL permettent de manipuler facilement les dates et heures.
  • NOW(), CURDATE() et CURTIME() donnent la date/heure actuelle.
  • DATE() extrait la partie date d'un DATETIME.
  • EXTRACT() permet d'extraire une partie spécifique (jour, mois, année, heure, etc.).
  • DATE_ADD() et DATE_SUB() permettent d'ajouter ou soustraire des intervalles.
  • DATEDIFF() calcule la différence en jours entre deux dates.
  • YEAR(), MONTH() et DAY() sont des raccourcis pour EXTRACT().
  • Les intervalles peuvent être de différents types : DAY, MONTH, YEAR, HOUR, MINUTE, SECOND, etc.
  • Toujours vérifier le format des dates lors des insertions pour éviter les erreurs.

Discussion (0)

Soyez le premier à laisser un commentaire !

Laisser un commentaire

Votre commentaire sera visible après modération.