Dans MariaDB, STR_TO_DATE()
est une fonction de date et d'heure intégrée qui renvoie une valeur datetime, basée sur la chaîne de date et la chaîne de format données.
Le STR_TO_DATE()
la fonction est l'inverse de DATE_FORMAT()
fonction.
Syntaxe
La syntaxe ressemble à ceci :
STR_TO_DATE(str,format)
Où str
est la chaîne de date, et format
est une chaîne de format qui spécifie le format de la chaîne de date.
Exemple
Voici un exemple :
SELECT STR_TO_DATE('Monday, May 24, 2021', '%W, %M %e, %Y');
Résultat :
+------------------------------------------------------+ | STR_TO_DATE('Monday, May 24, 2021', '%W, %M %e, %Y') | +------------------------------------------------------+ | 2021-05-24 | +------------------------------------------------------+
La chaîne de format se compose d'un certain nombre de spécificateurs de format qui indiquent à MariaDB comment la date du premier argument est formatée. Voir Chaînes de format MariaDB pour une liste des spécificateurs de format pouvant être utilisés dans une chaîne de format.
Dans cet exemple, le résultat est une valeur de date, car la chaîne de format contient uniquement les parties de date.
Renvoyer une valeur DateHeure
Voici un exemple qui renvoie une valeur datetime :
SELECT STR_TO_DATE('May 24, 2021', '%M %e, %Y %H:%i:%S');
Résultat :
+---------------------------------------------------+ | STR_TO_DATE('May 24, 2021', '%M %e, %Y %H:%i:%S') | +---------------------------------------------------+ | 2021-05-24 00:00:00 | +---------------------------------------------------+
Dans cet exemple, la partie heure a été ajoutée, même si le premier argument ne contenait aucune partie heure.
Voici un autre exemple qui inclut une partie horaire dans le premier argument :
SELECT
STR_TO_DATE('10:30:45 on May 24, 2021', '%H:%i:%S on %M %e, %Y');
Résultat :
+------------------------------------------------------------------+ | STR_TO_DATE('10:30:45 on May 24, 2021', '%H:%i:%S on %M %e, %Y') | +------------------------------------------------------------------+ | 2021-05-24 10:30:45 | +------------------------------------------------------------------+
En voici une autre, où la chaîne de date utilise une valeur temporelle plus lâche :
SELECT
STR_TO_DATE('10.30pm on May 24, 2021', '%H.%ipm on %M %e, %Y');
Résultat :
+----------------------------------------------------------------+ | STR_TO_DATE('10.30pm on May 24, 2021', '%H.%ipm on %M %e, %Y') | +----------------------------------------------------------------+ | 2021-05-24 10:30:00 | +----------------------------------------------------------------+
Renvoyer une valeur de temps
Ici, nous modifions la chaîne de format pour renvoyer uniquement la valeur de l'heure :
SELECT STR_TO_DATE('10:30:45 on May 24, 2021', '%H:%i:%S');
Résultat :
+-----------------------------------------------------+ | STR_TO_DATE('10:30:45 on May 24, 2021', '%H:%i:%S') | +-----------------------------------------------------+ | 10:30:45 | +-----------------------------------------------------+
Chaîne date/heure illégale
Passer une chaîne de date illégale renvoie null
avec un avertissement.
Exemple :
SELECT STR_TO_DATE('Humpday, May 26, 2021', '%W, %M %e, %Y');
Résultat :
+-------------------------------------------------------+ | STR_TO_DATE('Humpday, May 26, 2021', '%W, %M %e, %Y') | +-------------------------------------------------------+ | NULL | +-------------------------------------------------------+ 1 row in set, 1 warning (0.009 sec)
Regardons l'avertissement :
SHOW WARNINGS;
Résultat :
+---------+------+----------------------------------------------------------------------------+ | Level | Code | Message | +---------+------+----------------------------------------------------------------------------+ | Warning | 1411 | Incorrect datetime value: 'Humpday, May 26, 2021' for function str_to_date | +---------+------+----------------------------------------------------------------------------+
Argument manquant
Appel de STR_TO_DATE()
avec le mauvais nombre d'arguments, ou sans passer d'arguments, génère une erreur :
SELECT STR_TO_DATE();
Résultat :
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'STR_TO_DATE'
Et un autre exemple :
SELECT STR_TO_DATE('Friday, 28 May 2021');
Résultat :
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'STR_TO_DATE'