Présentation
MySQL est livré avec de nombreuses fonctions intégrées qui vous permettent de manipuler des données. Ces fonctions sont regroupées en catégories :fonctions de date, fonctions de chaîne, fonctions mathématiques et autres.
Les fonctions de date vous offrent de nombreuses options pour modifier, calculer et convertir les expressions de date, d'heure et de date/heure dans MySQL.
Dans ce didacticiel, vous découvrirez les fonctions de date et d'heure de MySQL et leur fonctionnement, à l'aide d'exemples pratiques.
Fonctions liées à la date
CURDATE OU CURRENT_DATE
Renvoie la date actuelle au format "AAAA-MM-JJ" ou "AAAAMMJJ" avec le CURDATE
OU CURRENT_DATE
commande.
La syntaxe de base :
CURDATE();
Par exemple, si vous exécutez :
SELECT CURDATE();
MySQL répond avec la date actuelle au format :
2021-01-17
DATE
Renvoie la date à partir d'une expression datetime en utilisant DATE
commande.
La syntaxe de base :
DATE(datetime);
Par exemple, si vous exécutez :
SELECT DATE('2021-01-17 10:12:16');
La sortie est :
2021-01-17
DATE_ADD ou ADDDATE
Ajoutez une valeur d'heure/date à une expression de date avec le DATE_ADD
ou ADDDATE
fonction.
La syntaxe de base :
DATE_ADD(date, INTERVAL value unit);
Remplacer date avec l'expression de date à laquelle vous souhaitez ajouter une heure/date. L'unité de valeur est l'heure/la date que vous souhaitez ajouter. Il doit être exprimé en une valeur numérique avec l'unité de la valeur.
L'unité peut être :
- DEUXIÈME
- MINUTES
- HEURE
- JOUR
- SEMAINE
- MOIS
- TRIMESTRE
- ANNÉE
- SECOND_MICROSECOND
- MINUTE_MICROSECOND
- MINUTE_SECOND
- HOUR_MICROSECOND
- HOUR_SECOND
- HOUR_MINUTE
- DAY_MICROSECOND
- DAY_SECOND
- DAY_MINUTE
- DAY_HOUR
- YEAR_MONTH
Par exemple, si vous exécutez :
SELECT DATE_ADD('2021-01-17 07:14:21', INTERVAL 20 MINUTE);
La sortie renvoie le résultat :
2021-01-17 07:34:21
DATE_FORMAT
Formater une date en utilisant DATE_FORMAT
.
La syntaxe de base :
DATE_FORMAT(date, format);
La date est l'expression de date que vous souhaitez reformater, tandis que le format est une combinaison des spécificateurs suivants :
Par exemple, si vous exécutez :
SELECT DATE_FORMAT('2021-01-17', '%W %M %Y');
La sortie affiche le résultat :
Sunday January 2021
DATE_SUB ou SUBDATE
Soustrayez une valeur d'heure/date à une expression de date avec le DATE_SUB
ou SUBDATE
fonction.
La syntaxe de base :
DATE_SUB(date, INTERVAL value unit);
Remplacer date avec l'expression de date que vous souhaitez soustraire. L'unité de valeur est l'heure/la date que vous souhaitez soustraire. Il doit être exprimé en valeur numérique avec l'unité de la valeur.
Rechercher une liste de types d'unités dans la section DATE_ADD.
Par exemple, si vous exécutez :
SELECT DATE_SUB('2021-01-17 07:14:21', INTERVAL 1 HOUR);
La sortie renvoie le résultat :
2021-01-17 06:14:21
DATEDIFF
Renvoie le nombre de jours entre deux expressions de date avec le DATEDIFF
fonction.
La syntaxe de base :
DATEDIFF(date1,date2);
Par exemple :
SELECT DATEDIFF('2021-01-23','2021-01-14');
Renvoie le résultat :
9
EXTRAIT
Pour extraire une partie d'une expression date/datetime, utilisez le EXTRACT
fonction.
La syntaxe de base :
EXTRACT(unit FROM date);
Dans la commande, vous devez spécifier quelle unité vous souhaitez extraire à partir de la date spécifiée .
Trouvez une liste d'unités que vous pouvez utiliser dans la description du DATE_ADD.
Par exemple, lorsque vous exécutez :
SELECT EXTRACT(DAY FROM '2021-01-26');
Vous obtenez le résultat :
26
OBTENIR_FORMAT
Renvoie une chaîne de format (une combinaison de spécificateurs) comme spécifié dans l'argument avec GET_FORMAT
. Cette fonction est souvent utilisée avec DATE_FORMAT
.
La syntaxe de base :
GET_FORMAT(DATE/TIME/DATETIME,format)
Utilisez cette fonction avec des expressions de date, d'heure et de date/heure.
Le format peut être :
- 'EUR'
- "États-Unis"
- 'JIS'
- 'ISO'
- 'INTERNE'
Il y a un nombre fini de résultats que vous pouvez obtenir en utilisant le GET_FORMAT
une fonction. Vous trouverez ci-dessous une liste de tous les appels de fonction et leurs résultats.
Par exemple, vous pouvez combiner la fonction avec DATE_FORMAT
, comme dans l'exemple suivant :
SELECT DATE_FORMAT('2021-01-26', GET_FORMAT(DATE,'EUR'));
Où est le résultat :
26.01.2021
PRENDRE DATE
Renvoie une expression de date à partir d'une année et d'un jour de l'année spécifiés à l'aide de MAKEDATE
fonction.
La syntaxe de base :
MAKEDATE(year,day);
Par exemple, si vous exécutez :
SELECT MAKEDATE(2021,34);
La sortie affiche le résultat :
2021-02-03
STR_TO_DATE
Formater une date à partir d'une chaîne avec STR_TO_DATE
et renvoie une valeur date/datetime.
La syntaxe de base :
STR_TO_DATE(string, format);
La chaîne est ce que vous voulez reformater, tandis que le format est une combinaison de spécificateurs qui décrivent chaque élément de la chaîne .
Vous pouvez trouver une liste de spécificateurs et leur signification dans la section DATE_FORMAT.
Par exemple, si vous exécutez :
SELECT STR_TO_DATE('January,25,2021', '%M %e %Y');
La sortie affiche :
2021-01-25
DATESYS
Pour renvoyer la date et l'heure actuelles au format "AAAA-MM-JJ hh:mm:ss" ou "AAAAMMJJHMMSS.uuuuuu", utilisez le SYSDATE
fonction.
La syntaxe de base :
SYSDATE();
Vous pouvez ajouter le fsp
argument pour inclure une précision fractionnaire de seconde (0-6). Dans ce cas, la syntaxe est SYSDATE(fsp);
.
La commande ci-dessous :
SELECT SYSDATE();
À ce moment donne le résultat :
2021-01-25 20:21:04
UTC_DATE
Renvoie la valeur de date actuelle en temps universel coordonné (UTC) au format "AAAA-MM-JJ" ou "AAAAMMJJ" avec le UTC_DATE
fonction.
La syntaxe de base :
UTC_DATE();
Par exemple, en exécutant la commande suivante :
SELECT UTC_DATE();
Renvoie la date actuelle qui est :
2021-01-25
Fonctions liées au temps
AJOUTER L'HEURE
Ajouter un intervalle de temps à une expression d'heure/date/heure spécifiée à l'aide de ADDTIME
.
La syntaxe de base :
ADDTIME(datetime, timevalue)
Par exemple, si vous exécutez :
SELECT ADDTIME('2021-01-25 08:13:11.000021', '3:14:32.000006');
Vous obtenez le résultat :
2021-01-25 11:27:43.000027
CONVERT_TZ
Convertir une expression heure/date/heure d'un fuseau horaire à un autre à l'aide de ADDTIME
fonction.
La syntaxe de base :
CONVERT_TZ(datetime, from_timezone,to_timezone)
Par exemple, lorsque vous exécutez :
SELECT CONVERT_TZ('2021-01-25 10:12:00','+00:00','+10:00');
MySQL convertit la date/heure spécifiée en fuseau horaire +10:00 :
2021-01-25 20:12:00
CURTIME ou CURRENT_TIME
Renvoie l'heure actuelle à l'aide de CURTIME
ou CURRENT_TIME
une fonction. Le résultat renvoie l'heure au format "hh:mm:ss" ou "hhmmss".
La syntaxe de base :
CURTIME();
Vous pouvez inclure une précision fractionnaire de seconde (de 0 à 6) en ajoutant le fsp
arguments.
Par exemple, la commande suivante affiche l'heure actuelle avec une précision de trois fractions de seconde :
CURTIME(3);
La sortie répond avec le résultat :
15:19:07.340
HEURE
Renvoie l'heure de l'heure/dateheure spécifiée avec le HOUR
fonction.
La syntaxe de base :
TIME(datetime);
Par exemple, si vous exécutez :
SELECT HOUR('08:40:07');
Le résultat est :
8
PRENDRE LE TEMPS
Renvoie une expression de temps à partir des valeurs d'heure, de minute et de seconde spécifiées à l'aide de MAKETIME
fonction.
La syntaxe de base :
MAKETIME(hour, minute, second);
Par exemple, vous pouvez exécuter :
SELECT MAKETIME(09,25,00);
Où la sortie affiche :
09:25:00
MICROSECOND
Renvoie les microsecondes de l'expression heure/date/heure spécifiée avec MICROSECOND
.
La syntaxe de base :
MICROSECOND(datetime);
Par exemple, vous pouvez exécuter :
SELECT MICROSECOND('2021-01-21 10:23:44.000040');
Où est le résultat :
40
MINUTES
Renvoie les minutes de l'expression heure/date/heure spécifiée à l'aide de MINUTE
fonction.
La syntaxe de base :
MINUTE(datetime);
Par exemple, si vous exécutez la commande :
SELECT MINUTE('10:23:44');
Le résultat est :
23
SEC_TO_TIME
Renvoie une valeur de temps à partir d'une valeur de secondes spécifiée avec le SEC_TO_TIME
fonction.
La syntaxe de base :
SEC_TO_TIME(seconds);
Par exemple, si vous exécutez la commande :
SELECT SEC_TO_TIME(8897);
La sortie est :
02:28:17
SOUS-HEURE
Soustraire une valeur d'heure d'une expression heure/dateheure à l'aide de SUBTIME
fonction.
La syntaxe de base :
SUBTIME(datetime,timevalue);
Par exemple, lorsque vous exécutez :
SELECT SUBTIME('2021-01-21 21:24:00','2:20:1');
La sortie est :
2021-01-21 19:03:59
HEURE
Pour renvoyer la valeur d'heure à partir d'une expression datetime, utilisez le TIME
fonction.
La syntaxe de base :
TIME(datetime);
Par exemple :
SELECT TIME('2021-01-22 13:38:10');
Donne le résultat :
13:38:10
TIME_FORMAT
Formatez une valeur de temps dans le format spécifié avec TIME_FORMAT
.
La syntaxe de base :
TIME_FORMAT(time,format);
Le format est une combinaison de spécificateurs. Vous pouvez trouver une liste de tous les spécificateurs et leur signification dans la description de la fonction DATE_FORMAT.
Par exemple, en exécutant :
SELECT TIME_FORMAT('13:45:10','%h %i %s %p');
Vous obtenez le résultat :
01 45 10 PM
TIME_TO_SEC
Pour renvoyer la valeur de temps convertie en secondes, utilisez le TIME_TO_SEC
.
La syntaxe de base :
TIME_TO_SEC(timevalue);
Par exemple, lorsque vous exécutez :
SELECT TIME_TO_SEC('13:48:05');
Le résultat est :
49685
HORAIRE
Calculez la différence entre deux expressions heure/dateheure avec le TIMEDIFF
une fonction. Dans ce cas, le résultat est toujours en valeur temps.
La syntaxe de base :
TIMEDIFF(datetime1,datetime2);
Par exemple, lorsque vous exécutez :
SELECT TIMEDIFF('2021-01-15 11:10:17','2021-01-05 11:10:16');
La sortie renvoie :
240:00:01
TO_SECONDS
Pour convertir une expression date/datetime en secondes, utilisez la fonction TO_SECONDS
. Le résultat est le nombre de secondes entre 0 et la date/datetime spécifiée.
La syntaxe de base :
TO_SECONDS(datetime);
Par exemple, si vous exécutez la commande :
SELECT TO_SECONDS('2021-01-21 08:10:17');
Le résultat est :
63778435817
UTC_TIME
Renvoie la valeur de l'heure UTC actuelle avec UTC_TIME
. Il renvoie la valeur de l'heure au format "HH:MM:SS" ou "HHMMSS".
La syntaxe de base :
UTC_TIME();
Par exemple, si vous exécutez :
SELECT UTC_TIME();
Vous obtenez le résultat à ce moment :
19:45:21
Fonctions liées à l'horodatage
CURRENT_TIMESTAMP ou LOCALTIMESTAMP
Pour renvoyer la date et l'heure actuelles, utilisez CURRENT_TIMESTAMP
ou LOCALTIMESTAMP
. Le résultat est renvoyé au format "AAAA-MM-JJ HH-MM-SS" ou "AAAAMMJJHHMMSS.uuuuuu".
La syntaxe de base :
CURRENT_TIMESTAMP();
Par exemple, en exécutant :
SELECT CURRENT_TIMESTAMP();
Le résultat actuel est :
2021-01-25 19:53:55
FROM_UNIXTIME
Renvoie une expression date/datetime à partir d'un horodatage au format Unix avec FROM_UNIXTIME
.
La syntaxe de base :
FROM_UNIXTIME(unix_timestamp);
Si vous exécutez la commande sans argument spécifiant le format, elle renvoie le résultat au format "AAAA-MM-JJ hh:mm:ss" ou "AAAAMMJJhhmmss".
Par exemple, si vous exécutez :
SELECT FROM_UNIXTIME(1611231404);
Vous obtenez le résultat :
2021-01-21 12:16:44
Horodatage
Pour renvoyer une expression datetime à partir d'une valeur date ou datetime, utilisez la fonction TIMESTAMP
. Si vous ajoutez deux arguments, la sortie renvoie la somme des arguments.
La syntaxe de base :
TIMESTAMP(datetime);
TIMESTAMP(datetime,time);
Par exemple, lorsque vous exécutez la commande :
SELECT TIMESTAMP('2021-01-13','30:50:00');
La sortie affiche le résultat :
2021-01-14 06:50:00
TIMESTAMPADD
Ajouter une valeur d'heure à une expression date/datetime en utilisant le TIMESTAMPADD
fonction.
La syntaxe de base :
TIMESTAMPADD(unit,value,datetime);
L'unité peut être :
- FRAC_SECOND
- DEUXIÈME
- MINUTES
- HEURE
- JOUR
- SEMAINE
- MOIS
- TRIMESTRE
- ANNÉE
Par exemple, la commande suivante ajoute 3 jours à la date spécifiée :
SELECT TIMESTAMPADD(DAY,3,'2021-01-18');
Par conséquent, la sortie affiche :
2021-01-21
TIMESTAMPDIFF
Pour calculer la différence entre deux expressions date/datetime, utilisez TIMESTAMPDIFF
. La fonction soustrait une valeur datetime de l'autre dans l'unité spécifiée.
La syntaxe de base :
TIMESTAMPDIFF(unit,datetime1,datetime2);
Vous pouvez trouver une liste avec différents types d'unités, consultez la liste dans la section ci-dessus.
Par exemple, vous pouvez calculer la différence entre les deux dates suivantes en jours :
SELECT TIMESTAMPDIFF(DAY,3,'2021-01-18');
Où est le résultat :
13
UNIX_TIMESTAMP
Renvoie un horodatage Unix à partir d'une expression date/datetime avec le UNIX_TIMESTAMP
une fonction. L'horodatage Unix représente les secondes entre la date et l'heure spécifiées et "1970-01-01 00:00:00" UTC.
La syntaxe de base :
UNIX_TIMESTAMP(datetime);
Par exemple, en exécutant la commande suivante :
SELECT UNIX_TIMESTAMP('2021-01-25 17:33:00');
Donne le résultat :
1611595980
UTC_TIMESTAMP
Renvoie la date et l'heure UTC actuelles avec UTC_TIMESTAMP
. Il renvoie la valeur datetime au format "AAAA-MM-JJ HH:MM:SS" ou "AAAAMMJJHMMSS.uuuuuu".
La syntaxe de base :
UTC_TIMESTAMP(datetime);
Par exemple, la commande :
SELECT UTC_TIMESTAMP();
Renvoie la sortie dans le même format que celui ci-dessous :
2021-01-25 23:18:06
Fonctions liées au jour/semaine/mois/année
JOUR
Renvoie le jour d'un mois à partir d'une expression date/datetime spécifiée avec le DAY
fonction.
La syntaxe de base :
DAY(datetime);
Si vous exécutez la commande ci-dessous :
SELECT DAY('2021-01-26 12:32:00');
La sortie renvoie le résultat :
26
DAYNAME
Renvoie le nom du jour de la semaine à partir d'une expression date/datetime spécifiée à l'aide de DAYNAME
fonction.
La syntaxe de base :
DAYNAME(datetime);
Par exemple, lorsque vous exécutez la commande :
SELECT DAYNAME('2021-01-26 12:32:00');
MySQL répond avec le résultat :
Tuesday
JOURDUMOIS
Renvoie le jour d'un mois à partir d'une expression date/datetime spécifiée avec DAYOFMONTH
.
La syntaxe de base :
DAYOFMONTH(datetime);
Par exemple, lorsque vous exécutez la commande :
SELECT DAYOFMONTH('2021-01-26 12:32:00');
MySQL répond avec le résultat :
26
JOUR DE LA SEMAINE
Renvoie le jour de la semaine en valeur numérique à partir de l'expression date/datetime spécifiée à l'aide de DAYOFWEEK
.
La syntaxe de base :
DAYOFWEEK(datetime);
Exécutez la commande ci-dessous :
SELECT DAYOFWEEK('2021-01-26 12:32:00');
Donne la réponse :
3
JOURDEANNÉE
Renvoie le jour d'une année à partir de l'expression date/datetime spécifiée à l'aide de la fonction DAYOFYEAR
.
La syntaxe de base :
DAYOFYEAR(datetime);
Par exemple, lorsque vous exécutez la commande :
SELECT DAYOFYEAR('2021-02-26 12:32:00');
La sortie donne le résultat :
57
DÈS_JOURS
Renvoie une expression de date à partir d'une représentation numérique d'un jour à l'aide de la fonction FROM_DAYS
.
La syntaxe de base :
FROM_DAYS(number);
Par exemple, en exécutant :
SELECT FROM_DAYS(738181);
L'invite MySQL répond avec le résultat :
2021-01-26
DERNIER_JOUR
Renvoie le dernier jour du mois à partir d'une date/heure spécifiée avec le LAST_DAY
fonction.
La syntaxe de base :
LAST_DAY(date);
Par exemple, si vous exécutez la commande suivante :
SELECT LAST_DAY('2021-01-26');
La sortie répond par :
31
MOIS
Renvoie le mois (en valeur numérique) à partir d'une date/dateheure spécifiée en utilisant le MONTH
fonction.
La syntaxe de base :
MONTH(date);
Par exemple, lorsque vous exécutez :
SELECT MONTH('2021-01-26');
MySQL répond par :
1
NOMMOIS
Renvoie le nom du mois à partir d'une date/dateheure spécifiée avec le MONTHNAME
fonction.
La syntaxe de base :
MONTHNAME(date);
Si vous exécutez la commande :
SELECT MONTH('2021-01-26');
Vous obtenez la réponse suivante :
January
PERIOD_ADD
Pour ajouter un nombre spécifié de mois à une période, utilisez le PERIOD_ADD
fonction.
La syntaxe de base :
PERIOD_ADD(period,number);
La période est défini au format AAMM ou AAAAMM, tandis que le nombre est le nombre de mois que vous souhaitez ajouter.
Par exemple :
SELECT PERIOD_ADD(202101, 5);
Donne le résultat :
202106
PERIOD_DIFF
Renvoie le nombre de mois entre deux périodes avec PERIOD_DIFF
.
La syntaxe de base :
PERIOD_DIFF(period1,period2);
Chaque période doit être au format AAMM ou AAAAMM.
Par exemple :
SELECT PERIOD_DIFF(202101, 202003);
Produit le résultat :
10
TRIMESTRE
Pour renvoyer un trimestre d'une année à partir d'une date/dateheure spécifiée, utilisez la fonction QUARTER
.
La syntaxe de base :
QUARTER(date);
Par exemple, en lançant la commande :
SELECT QUARTER('2021-01-26');
La sortie répond par :
1
TO_DAYS
Convertir une expression date/datetime en une représentation numérique d'un jour avec TO_DAYS
.
La syntaxe de base :
TO_DAYS(datetime);
Par exemple, pour la commande :
SELECT TO_DAYS('2021-01-26');
Le résultat est :
738181
SEMAINE
Pour renvoyer le numéro de semaine à partir d'une date spécifiée, utilisez la fonction WEEK
.
La syntaxe de base :
WEEK(date);
Vous pouvez également inclure le mode argument, auquel cas la syntaxe est WEEK(date,mode);
.
L'argument mode spécifie à partir de quel jour la semaine commence. S'il n'y a pas d'argument, il utilise 0
mode par défaut.
Le tableau suivant décrit chaque mode :
Par exemple, si vous exécutez :
SELECT WEEK('2021-01-26');
La sortie répond par :
4
JOUR DE SEMAINE
Renvoie le jour de la semaine à partir de la date spécifiée en valeur numérique avec WEEKDAY
. Chaque nombre représente l'un des jours de la semaine - lundi est 0
, mardi est 1
, et ainsi de suite.
La syntaxe de base :
WEEKDAY(date);
Par exemple, en exécutant la commande suivante :
SELECT WEEKDAY('2021-01-26');
Donne la réponse :
1
SEMAINE DE L'ANNÉE
Pour renvoyer le numéro d'une semaine dans une année, utilisez le WEEKDAY
fonction.
La syntaxe de base :
WEEKOFYEAR(date);
Par exemple, lorsque vous exécutez la commande :
SELECT WEEKOFYEAR('2021-01-26');
La sortie affiche le résultat :
3
ANNÉE
Renvoie l'année à partir de la date spécifiée avec le YEAR
fonction.
La syntaxe de base :
YEAR(date);
Si vous exécutez la commande suivante :
SELECT YEAR('2021-01-26');
Vous obtenez le résultat :
2021
ANNEE SEMAINE
Renvoie l'année et le numéro de semaine à partir de la date spécifiée en utilisant le YEARWEEK
fonction.
La syntaxe de base :
YEARWEEK(date);
Vous pouvez ajouter un mode
argument à la syntaxe de base pour spécifier le jour à partir duquel la semaine commence. Pour voir une liste des modes et leur signification, consultez le tableau dans la WEEK
fonction.
Par exemple, lorsque vous exécutez la commande :
SELECT YEARWEEK('2021-01-26');
La sortie affiche :
202104