Problema:
Le gustaría mostrar una cantidad de segundos como un valor de tiempo en horas, minutos y segundos en MySQL.
Ejemplo:
Nuestra base de datos tiene una tabla llamada athlete_score
con datos en las columnas id
, first_name
, last_name
y score_seconds
.
id | nombre | apellido | puntuación_segundos |
---|---|---|---|
1 | Emily | Watson | 1124 |
2 | Tom | García | 987 |
3 | Gary | Martínez | 1003 |
4 | James | Anderson | 1233 |
Para cada atleta, obtengamos su nombre y apellido y su tiempo récord del seconds_record
columna. En este momento, está almacenado como una cantidad de segundos; mostrémoslo en formato HH:MM:SS.
Solución:
Usaremos el SEC_TO_TIME()
función. Esta es la consulta que escribirías:
SELECT first_name, last_name, SEC_TO_TIME(score_seconds) AS score_time FROM athlete_score;
Este es el resultado de la consulta:
nombre | apellido | puntuación_tiempo |
---|---|---|
Emily | Watson | 00:18:44 |
Tomás | García | 00:16:27 |
Gary | Martínez | 00:16:43 |
James | Anderson | 00:20:33 |
Discusión:
Usa el SEC_TO_TIME
() si desea mostrar una cantidad de segundos como un valor de tiempo en MySQL. Esta función solo toma un argumento, ya sea una expresión que devuelve segundos como un número entero o una columna que almacena una cantidad de segundos como un número entero. (En nuestro ejemplo, usamos la columna score_seconds
.)
SEC_TO_TIME()
devuelve la hora en el formato HH:MM:SS, donde HH es una hora de 00 a 59, MM son minutos de 01 a 59 y SS son segundos de 00 a 59. En nuestro ejemplo, Emily Watson la puntuación en segundos es 1124 segundos; como valor de tiempo, es 18 minutos y 44 segundos.