Como calcular intervalos de tempo decorrido entre dois horários no MySQL – Elias Praciano
Categories
Banco de dados Tutoriais

Como calcular intervalos de tempo decorrido entre dois horários no MySQL

Como calcular o tempo decorrido em segundos e horas, com o uso das funções TIME_TO_SEC e SEC_TO_TIME no MySQL.

Se você tem dois valores temporais, um horário de saída e outro de chegada, e deseja saber qual foi o tempo decorrido entre os dois, use a função TIME_TO_SEC() e sua contraparte SEC_TO_TIME().
Ambas, presentes no MySQL (desde a versão 3.22), oferecem uma forma (entre outras) de fazer cálculos envolvendo valores temporais, como horários e datas inteiras.
Você pode ver outros exemplos de uso destas funções aqui.
Se você quer adicionar 3 horas a um horário 15:35:00, não é possível fazer isto apenas somando 15:35:00 + 3 — são unidades diferentes, afinal.

Captura de tela: MySQL calculos envolvendo horas no banco de dados.
Clique para ampliar.

É aí que entra a função TIME_TO_SEC() — ela converte os valores para segundos.
Quando todas as grandezas envolvidas na operação estão usando a mesma unidade, é possível realizar qualquer conta.

SET @HoraSaida='15:20:00';
SET @HoraChegada='17:20:00';
SELECT @HoraSaida, @HoraChegada, TIME_TO_SEC(@HoraChegada) - TIME_TO_SEC(@HoraSaida) AS "Tempo decorrido em segundos";
_
+------------+--------------+-----------------------------+
| @HoraSaida | @HoraChegada | Tempo decorrido em segundos |
+------------+--------------+-----------------------------+
| 15:20:00   | 17:20:00     |                        7200 |
+------------+--------------+-----------------------------+
1 row in set (0.00 sec)

Ao terminar de realizar as operações aritméticas, você converte de volta, usando SEC_TO_TIME() — e voilá (desculpe o clichê) você tem um resultado apresentável, no formato de horário.

SELECT @HoraSaida, @HoraChegada,  SEC_TO_TIME(TIME_TO_SEC(@HoraChegada) - TIME_TO_SEC(@HoraSaida)) AS "Tempo decorrido em horas";
_
+------------+--------------+--------------------------+
| @HoraSaida | @HoraChegada | Tempo decorrido em horas |
+------------+--------------+--------------------------+
| 15:20:00   | 17:20:00     | 02:00:00                 |
+------------+--------------+--------------------------+
1 row in set (0.00 sec)

Note que intervalos de tempo decorrido podem ser negativos — para isto basta que o primeiro valor de horário seja posterior ao segundo. Ou seja, se você saiu de casa às 7:00:00, pro trabalho, e chegou às 6:45:00, você terá gasto -15 minutos de deslocamento — uma verdadeira viagem no tempo.

By Elias Praciano

Autor de tecnologia (livre, de preferência), apaixonado por programação e astronomia.
Fã de séries, como "Rick and Morty" e "BoJack Horseman".
Me siga no Twitter e vamos trocar ideias!

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.