MySQL - Conversão de tempo?

MySQL - Conversão de tempo?
Author: Eurai
Inclusão: 14/08/2021
Alteração: 15/08/2021

 

Neste artigo venho trazer exemplo de como executar essa conversão.

 

Para conversão é possível utilizar as funções Time_TO_sec() / sec_to_time()

Primeiro, é necessário converter o tempo para segundos, somar ela se necessário, em seguida retornar para data..

Resultado abaixo:

 

 

sec_to_time(sum(time_to_sec(total_time)))

 

É possível utilizar para saber a diferença entre duas datas.

Pegar a hora inicial e hora final, converter ambas para segundos. Subtrair ambas datas, assim obterá o resultado em segundo.

Com o resultado, converta novamente em hora.

 

 - Ahhh Eurai, mas no meu banco eu armazei como float,  no meu banco está com o valor "8,5", "2,26".

Segue exemplo de como converter nessa caso:

 

 

REPLACE(total_time,'.',':'),concat(REPLACE(total_time,'.',':'),':00'), TIME_TO_SEC(REPLACE(total_time,'.',':'))
SUM(TIME_TO_SEC(REPLACE(total_time,'.',':'))), sec_to_time(SUM(TIME_TO_SEC(REPLACE(total_time,'.',':'))) ) // a Soma

 

 

 

 

mysql-mariadb-time-to-sec-sec-to-time-3 

 

mysql-mariadb-time-to-sec-sec-to-time-2

 

E ainda não ficará correto. Pois, é possível que o "40" minutos seja reconhecido como "04", causando diferença. Segue abaixo o comando definitivo para a soma:

 

sec_to_time(SUM(TIME_TO_SEC(concat(REPLACE(CAST(total_time AS DECIMAL(4,2)),'.',':'),':00'))) )

 

Explicando o comando acima.

Primeiro é convertido para formatar o numero com duas casas decimais, CAST(total_time AS DECIMAL(4,2))

Em seguida utilizamos o replace, para trocar o "." para ":" REPLACE(resultado,'.',':')

No proximo comando, é utilizado o contat para adicionar o segundos: concat(resultado,':00')

Convertemos em seguida para segundos, TIME_TO_SEC(resultado)

Somamos todo o valor com a função SUM()

E por últimos, voltamos o segundo para tempo sec_to_time()

 

Durante meus testes, não precisou adicionar o contat (segundos).

Realize alguns testes na sua consulta.

 

 

Gostou? Compartilhe com seus amigos e deixe um comentário! 😎

Um abraço, e até a próxima  

 

 

 

 

 

Esse conteúdo te ajudou? Ajude o canal com doação
Compartilhar
Comentários