Problema:
Quiere extraer la hora de un valor de cadena en MySQL.
Ejemplo:
Tiene un valor de cadena que se ve así:
‘Wednesday, 10 February 2021, 12:30:20’
Desea extraer solo la parte de tiempo, '12:30:20'.
Solución:
Aquí está la consulta:
SELECT DATE_FORMAT(STR_TO_DATE("Wednesday, 10 February 2021, 12:30:20", "%W, %d-%m-%Y, %T"), "%T");
Discusión:
Para ilustrar el proceso más claramente, lo explicaremos en dos partes.
Primero, tenemos que convertir la cadena a un valor de fecha. Para hacer esto, usamos el STR_TO_DATE
función. La consulta debería verse así:
SELECT STR_TO_DATE("Wednesday, 10 February 2021, 12:30:20", "%W, %d-%m-%Y, %T”);
El propósito del STR_TO_DATE
La función es convertir una cadena de texto a un formato de fecha y hora. La sintaxis de esta función es la siguiente:
STR_TO_DATE(string, format);
El primer argumento de esta función es la cadena que queremos convertir. El segundo argumento especifica el formato de la cadena. En nuestro caso, usamos los siguientes parámetros:
- %W:nombre del día de la semana de domingo a sábado.
- %d:Día del mes como valor numérico del 01 al 31.
- %m:Mes como valor numérico del 01 al 12.
- %Y:Año como un valor numérico de 4 dígitos (yyyy).
- %T:hora en formato de 24 horas (hh:mm:ss).
Puede encontrar más parámetros en la documentación oficial de MySQL.
El resultado de esta consulta debería verse así:
2021-02-10 12:30:20
Ahora tenemos el valor en el tipo de datos DATETIME. Para extraer solo la hora, tenemos que agregar el DATE_FORMAT
función a la consulta anterior.
La sintaxis general del DATE_FORMAT
la función es:
DATE_FORMAT(date, format)
Entonces nuestra consulta debería verse así:
SELECT DATE_FORMAT(STR_TO_DATE("Wednesday, 10 February 2021, 12:30:20", "%W, %d-%m-%Y, %T"), "%T");
En nuestro ejemplo, el primer argumento de DATE_FORMAT
la función es la fecha resultante del STR_TO_DATE
función. El segundo argumento es el formato, que funciona de la misma manera que en el STR_TO_DATE
función. Como aquí solo necesitamos el tiempo, especificamos "%T
" como segundo argumento.
El carácter % es obligatorio antes de los caracteres del especificador de formato. Debemos especificar el formato exactamente en el mismo orden, incluidos todos los signos de puntuación.
El resultado de la consulta que vemos a continuación es el resultado esperado.
12:30:20
Al usar una combinación de estas dos funciones, puede extraer todas las combinaciones posibles de fecha y hora de una cadena de texto.