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.