MariaDB
 sql >> Base de données >  >> RDS >> MariaDB

Comment STR_TO_DATE() fonctionne dans MariaDB

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)

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'