Langage SQL

Notification de cookies

Nous utilisons des cookies pour améliorer votre expérience. En poursuivant votre navigation sur ce site, vous acceptez l'utilisation de cookies. Plus d'informations

Les fonctions SQL de manipulation de date

En SQL, les dates sont compliquées pour les débutants, car lors de l'utilisation d'une base de données, le format de la date dans le tableau doit être apparié avec la date d'entrée pour pouvoir l'insérer.

Dans divers scénarios au lieu de la Date, DateTime(l'heure est également impliquée avec la date) est utilisé.

Dans ce cours, nous allons parler de différentes fonctions de date par défaut dans MySQLl.

La 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 |
+------+------------+------------+-------------------+-----+

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 :
                                SELECT NOW();
                            
+---------------------+
| NOW()               |
+---------------------+
| 2019-09-24 13:48:18 |
+---------------------+

CURDATE()

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

Exemple :
                                SELECT CURDATE();
                            
+------------+
| CURDATE()  |
+------------+
| 2019-09-24 |
+------------+

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 :
                                SELECT CURTIME();
                            
+-----------+
| CURTIME() |
+-----------+
| 13:59:00  |
+-----------+

DATE(date)

Extrait la partie date de la date ou de l'expression DateTime.

Exemple 1 :
                                SELECT DATE('2019-09-24 13:59:03');
                            
+-----------------------------+
| DATE('2019-09-24 13:59:03') |
+-----------------------------+
| 2019-09-24                  |
+-----------------------------+
Exemple 2 :
                                SELECT DATE(Date_debut) FROM Conges;
                            
+------------------+
| DATE(Date_debut) |
+------------------+
| 2019-02-01       |
| 2019-05-20       |
| 2019-09-01       |
| 2019-09-24       |
| 2019-09-19       |
+------------------+

EXTRACT(unit FROM date)

Renvoie une seule partie d'une date/heure.
Plusieurs unités peuvent être envisagées, mais seules certaines sont utilisées, telles que : MICROSECOND, SECOND, MINUTE, HOUR, DAY, WEEK, MONTH, QUARTER, YEAR, etc.

Exemple :
                                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;
                            
+------+------+--------+
| Jour | Mois | Année  |
+------+------+--------+
|    1 |    2 |   2019 |
|   20 |    5 |   2019 |
|    1 |    9 |   2019 |
|   24 |    9 |   2019 |
|   19 |    9 |   2019 |
+------+------+--------+

DATE_ADD(date, INTERVAL expr type)

Ajoute un intervalle de temps spécifié à une date.
type peut être l'un des types suivants : MICROSECOND, SECOND, MINUTE, HOUR, DAY, WEEK, MONTH, QUARTER, YEAR, etc.

Exemple 1 :

Ajouter un an à chaque Date_debut

                                SELECT DATE_ADD(Date_debut, INTERVAL 1 YEAR) FROM Conges;
                            
+---------------------------------------+
| DATE_ADD(Date_debut, INTERVAL 1 YEAR) |
+---------------------------------------+
| 2020-02-01                            |
| 2020-05-20                            |
| 2020-09-01                            |
| 2020-09-24                            |
| 2020-09-19                            |
+---------------------------------------+
Exemple 2 :

Ajouter 3 mois à chaque Date_debut

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

DATE_SUB(date, INTERVAL expr type)

Soustrait un intervalle de temps spécifié à une date.
type peut être l'un des types suivants : MICROSECOND, SECOND, MINUTE, HOUR, DAY, WEEK, MONTH, QUARTER, YEAR, etc.

Exemple :

Soustrait 3 mois de Date_Debut

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

DATEDIFF(date1, date2);

Renvoie date1-date2 sous forme de valeur en jours d'une date à l'autre. date1 et date2 sont des expressions de date ou de date et heure. Seules les parties de date des valeurs sont utilisées dans le calcul.

Exemple :

La requête suivante indiquera le nombre de jours passés de Date_debut jusqu'à maintenant

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

YEAR(date), MONTH(date) et DAY(date)

Utilisée pour extraire l'année, le mois et le jour respectivement

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

Partager ce cours avec tes amis :

Rédigé par M. ESSADDOUKI

Learning a new programming language is an easy thing, but the most difficult thing is how to design efficient algorithms for real-world problems, so don't be a programmer, be a problems solver.

Cours Similaires :