Dans MySQL, vous pouvez utiliser le EXTRACT()
fonction pour extraire des parties d'une date. Par exemple, vous pouvez extraire la partie année, la partie mois ou la partie jour, etc. Vous pouvez également extraire des parties du composant horaire, telles que les minutes, les secondes, les microsecondes, etc.
Cet article contient des exemples à démontrer.
Syntaxe
La syntaxe ressemble à ceci :
EXTRACTION(unité DE date)
Où unit
est la partie date que vous souhaitez extraire, et date
est la valeur de date à partir de laquelle extraire cette partie.
Consultez le tableau au bas de cet article pour obtenir une liste des spécificateurs d'unités valides.
Exemple 1
Voici un exemple pour illustrer l'utilisation de base de la fonction.
SELECT EXTRACT(YEAR FROM '2019-01-01') AS 'Result' ;
Résultat :
+--------+| Résultat |+--------+| 2019 |+--------+
Exemple 2 - Plus de parties de date
Ici, j'extrait les différentes parties de date d'une date.
SET @date ='2019-10-03';SELECT EXTRACT(DAY FROM @date) AS 'Day', EXTRACT(MONTH FROM @date) AS 'Mois', EXTRACT(YEAR FROM @date) AS 'Year ';
Résultat :
+------+-------+------+| jour | Mois | Année |+------+-------+------+| 3 | 10 | 2019 |+------+-------+------+
Exemple 3 - Extraction de parties de temps
Ici, j'extrait différentes parties du temps à partir d'une date.
SET @date ='2019-10-03 12:35:05.123456';SELECT EXTRACT(HOUR FROM @date) AS 'Heures', EXTRACT(MINUTE FROM @date) AS 'Minutes', EXTRACT(SECOND FROM @ date) AS 'Secondes', EXTRACT(MICROSECOND FROM @date) AS 'Microsecondes' ;
Résultat :
+-------+---------+---------+--------------+| Heures | procès-verbal | Secondes | Microsecondes |+-------+---------+---------+--------------+| 12 | 35 | 5 | 123456 |+-------+---------+---------+-------+
Exemple 4 - Combinaison de spécificateurs d'unités
Vous pouvez également combiner des spécificateurs d'unité, comme ceci :
SET @date ='2019-10-03 12:35:05.123456';SELECT EXTRACT(HOUR_MICROSECOND FROM @date) AS 'Result';
Résultat :
+--------------+| Résultat |+--------------+| 123505123456 |+----------------------+
Cet exemple renvoie tout, de la partie heures à la partie microsecondes.
Un exemple de base de données
Voici un exemple d'extraction de l'année et du mois d'une colonne dans une base de données :
USE sakila;SELECT payment_date AS 'Date/Time', EXTRACT(YEAR_MONTH FROM payment_date) AS 'Year/Month'FROM paymentWHERE payment_id =1;
Résultat :
+---------------------+------------+| Date/Heure | Année/Mois |+---------------------+------------+| 2005-05-25 11:30:37 | 200505 |+---------------------+------------+
Date/heure actuelle
Ici, j'extrait la partie mois d'une date générée avec le CURDATE()
fonction.
SELECT CURDATE(), EXTRACT(MONTH FROM CURDATE());
Résultat :
+------------+-------------------------------+| CURDATE() | EXTRAIT(MOIS DE CURDATE()) |+------------+--------------------------- ----+| 2018-06-26 | 6 |+------------+-------------------------------+Dans cet exemple, j'extrait la partie heure de la date et de l'heure actuelles (qui est générée avec le
NOW()
fonction).SÉLECTIONNER MAINTENANT(), EXTRAIRE(HEURE À PARTIR DE MAINTENANT());Résultat :
+---------------------+------------------------ --+| MAINTENANT() | EXTRAIT(HEURE A PARTIR DE MAINTENANT()) |+---------------------+------------------ --------+| 2018-06-26 09:01:46 | 9 |+---------------------+------------------------- -+Valeurs attendues
Le tableau suivant indique les valeurs unitaires valides et leur format attendu.
unit Valeur | expr attendu Format |
---|---|
MICROSECOND | MICROSECONDES |
DEUXIÈME | SECONDES |
MINUTE | MINUTES |
HEURE | HEURES |
JOUR | JOURS |
SEMAINE | SEMAINES |
MOIS | MOIS |
TRIMESTRE | QUARTS |
ANNÉE | ANNÉES |
SECOND_MICROSECOND | ‘SECONDS.MICROSECONDES’ |
MINUTE_MICROSECOND | ‘MINUTES :SECONDES.MICROSECONDES’ |
MINUTE_SECOND | ‘MINUTES :SECONDES’ |
HOUR_MICROSECOND | ‘HEURES:MINUTES:SECONDES.MICROSECONDES’ |
HOUR_SECOND | ‘HEURES:MINUTES:SECONDES’ |
HOUR_MINUTE | ‘HEURES :MINUTES’ |
DAY_MICROSECOND | ‘JOURS HEURES:MINUTES:SECONDES.MICROSECONDES’ |
DAY_SECOND | ‘JOURS HEURES:MINUTES:SECONDES’ |
DAY_MINUTE | 'JOURS HEURES :MINUTES' |
DAY_HOUR | 'JOURS HEURES' |
YEAR_MONTH | ‘ANNÉES-MOIS’ |