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'