sql >> Base de Datos >  >> RDS >> MariaDB

Cómo funciona STR_TO_DATE() en MariaDB

En MariaDB, STR_TO_DATE() es una función de fecha y hora incorporada que devuelve un valor de fecha y hora, basado en la cadena de fecha y la cadena de formato dadas.

El STR_TO_DATE() la función es la inversa de DATE_FORMAT() función.

Sintaxis

La sintaxis es así:

STR_TO_DATE(str,format)

Donde str es la cadena de fecha y format es una cadena de formato que especifica el formato de la cadena de fecha.

Ejemplo

He aquí un ejemplo:

SELECT STR_TO_DATE('Monday, May 24, 2021', '%W, %M %e, %Y');

Resultado:

+------------------------------------------------------+
| STR_TO_DATE('Monday, May 24, 2021', '%W, %M %e, %Y') |
+------------------------------------------------------+
| 2021-05-24                                           |
+------------------------------------------------------+

La cadena de formato consta de una serie de especificadores de formato que le indican a MariaDB cómo se formatea la fecha en el primer argumento. Consulte Cadenas de formato de MariaDB para obtener una lista de especificadores de formato que se pueden usar en una cadena de formato.

En este ejemplo, el resultado es un valor de fecha, porque la cadena de formato contiene solo las partes de la fecha.

Devolver un valor de fecha y hora

Aquí hay un ejemplo que devuelve un valor de fecha y hora:

SELECT STR_TO_DATE('May 24, 2021', '%M %e, %Y %H:%i:%S');

Resultado:

+---------------------------------------------------+
| STR_TO_DATE('May 24, 2021', '%M %e, %Y %H:%i:%S') |
+---------------------------------------------------+
| 2021-05-24 00:00:00                               |
+---------------------------------------------------+

En este ejemplo, se agregó la parte de tiempo, aunque el primer argumento no contenía ninguna parte de tiempo.

Aquí hay otro ejemplo que incluye una parte de tiempo en el primer argumento:

SELECT 
STR_TO_DATE('10:30:45 on May 24, 2021', '%H:%i:%S on %M %e, %Y');

Resultado:

+------------------------------------------------------------------+
| STR_TO_DATE('10:30:45 on May 24, 2021', '%H:%i:%S on %M %e, %Y') |
+------------------------------------------------------------------+
| 2021-05-24 10:30:45                                              |
+------------------------------------------------------------------+

Aquí hay otro, donde la cadena de fecha usa un valor de tiempo más flexible:

SELECT 
STR_TO_DATE('10.30pm on May 24, 2021', '%H.%ipm on %M %e, %Y');

Resultado:

+----------------------------------------------------------------+
| STR_TO_DATE('10.30pm on May 24, 2021', '%H.%ipm on %M %e, %Y') |
+----------------------------------------------------------------+
| 2021-05-24 10:30:00                                            |
+----------------------------------------------------------------+

Devolver un valor de tiempo

Aquí, cambiamos la cadena de formato para devolver solo el valor de tiempo:

SELECT STR_TO_DATE('10:30:45 on May 24, 2021', '%H:%i:%S');

Resultado:

+-----------------------------------------------------+
| STR_TO_DATE('10:30:45 on May 24, 2021', '%H:%i:%S') |
+-----------------------------------------------------+
| 10:30:45                                            |
+-----------------------------------------------------+

Cadena de fecha/hora ilegal

Pasar una cadena de fecha ilegal devuelve null con una advertencia.

Ejemplo:

SELECT STR_TO_DATE('Humpday, May 26, 2021', '%W, %M %e, %Y');

Resultado:

+-------------------------------------------------------+
| STR_TO_DATE('Humpday, May 26, 2021', '%W, %M %e, %Y') |
+-------------------------------------------------------+
| NULL                                                  |
+-------------------------------------------------------+
1 row in set, 1 warning (0.009 sec)

Veamos la advertencia:

SHOW WARNINGS;

Resultado:

+---------+------+----------------------------------------------------------------------------+
| Level   | Code | Message                                                                    |
+---------+------+----------------------------------------------------------------------------+
| Warning | 1411 | Incorrect datetime value: 'Humpday, May 26, 2021' for function str_to_date |
+---------+------+----------------------------------------------------------------------------+

Argumento faltante

Llamando a STR_TO_DATE() con el número incorrecto de argumentos, o sin pasar ningún argumento, da como resultado un error:

SELECT STR_TO_DATE();

Resultado:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'STR_TO_DATE'

Y otro ejemplo:

SELECT STR_TO_DATE('Friday, 28 May 2021');

Resultado:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'STR_TO_DATE'