Ajude o site desativando o bloqueador de anúncio
Cabeçalho

MySQL - Conversão de tempo?

Autor: Eurai Criado: 14/08/2021 Atualizado: 29/11/2025 MySQL / MariaDB
Postagem

⏱️ MySQL – Como Converter Tempo Correta e Precisamente

 

Neste artigo trago exemplos práticos e eficazes para realizar conversões de tempo no MySQL/MariaDB. ⛏️

Para isso, utilizamos duas funções essenciais:

  • TIME_TO_SEC() – Converte tempo para segundos
  • SEC_TO_TIME() – Converte segundos para tempo

 

🔄 Exemplo básico de conversão e soma

Primeiro convertemos o tempo para segundos, somamos o total desejado e depois convertemos novamente para formato de tempo:

sec_to_time( SUM(time_to_sec(total_time)) )

 

Também é possível calcular diferença entre duas datas: basta converter a hora inicial e a final para segundos, subtrair e depois retornar o valor para formato de tempo.

 

🧮 E se o tempo estiver armazenado como FLOAT?

Alguns bancos armazenam valores como 8.5, 2.26 etc., representando horas e minutos. Para converter corretamente, veja um exemplo:

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,'.',':'))) )   -- Soma

 

Porém, esse método ainda não é totalmente confiável. Por exemplo: “8.40” pode ser interpretado como “8:04” dependendo do arredondamento.

✅ Comando definitivo para somar tempos armazenados como FLOAT

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

 

📝 Explicação passo a passo

  • CAST(total_time AS DECIMAL(4,2)) Formata corretamente o valor com duas casas decimais.
  • REPLACE(…, '.', ':') Troca o ponto por dois-pontos, transformando “8.50” → “8:50”.
  • concat(…, ':00') Adiciona os segundos → “8:50:00”.
  • TIME_TO_SEC() Converte tudo para segundos.
  • SUM() Soma todos os valores.
  • SEC_TO_TIME() Converte novamente para formato de tempo.

Nos testes que realizei, o concat dos segundos não foi sempre necessário. Faça testes na sua consulta para confirmar o comportamento desejado.

 

📸 Exemplos gráficos

 

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

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

 

#mysql #mariadb #conversao tempo #time_to_sec #sec_to_time #sqltips #horas mysql #programacao sql #universoadvpl

ASSINE A NEWSLETTER

Cadastrando...

PIX uDesenv

PIX QR Code para depósito

Clique para doar

Parceiros

Tudo em ADVPL - Blog parceiro

Blog ADVPL