Problema:
Você gostaria de exibir um número de segundos como um valor de tempo em horas, minutos e segundos no MySQL.
Exemplo:
Nosso banco de dados tem uma tabela chamada
athlete_score
com dados nas colunas id
, first_name
, last_name
e score_seconds
. id | first_name | last_name | score_seconds |
---|---|---|---|
1 | Emily | Watson | 1124 |
2 | Tom | Garcia | 987 |
3 | Gary | Martinez | 1003 |
4 | James | Anderson | 1233 |
Para cada atleta, vamos obter seus nomes e sobrenomes e seu tempo recorde do
seconds_record
coluna. No momento, é armazenado como um número de segundos; vamos exibi-lo no formato HH:MM:SS. Solução:
Usaremos o
SEC_TO_TIME()
função. Aqui está a consulta que você escreveria:SELECT first_name, last_name, SEC_TO_TIME(score_seconds) AS score_time FROM athlete_score;
Segue o resultado da consulta:
first_name | last_name | score_time |
---|---|---|
Emily | Watson | 00:18:44 |
Tom | Garcia | 00:16:27 |
Gary | Martinez | 00:16:43 |
James | Anderson | 00:20:33 |
Discussão:
Use o
SEC_TO_TIME
() se você deseja exibir um número de segundos como um valor de tempo no MySQL. Essa função recebe apenas um argumento – uma expressão que retorna segundos como um inteiro ou uma coluna armazenando um número de segundos como um inteiro. (No nosso exemplo, usamos a coluna score_seconds
.) SEC_TO_TIME()
retorna a hora no formato HH:MM:SS, onde HH é uma hora de 00 a 59, MM são minutos de 01 a 59 e SS são segundos de 00 a 59. Em nosso exemplo, Emily Watson pontuação em segundos é 1124 segundos; como valor de tempo, é 18 minutos e 44 segundos.