O
TIMEDIFF() do MySQL A função retorna a diferença entre dois valores de hora ou data e hora. A maneira como funciona é, você fornece os dois valores para comparar e
TIMEDIFF() subtrai o segundo valor do primeiro e, em seguida, retorna o resultado como um valor de tempo. Sintaxe
A sintaxe fica assim:
TIMEDIFF(expr1,expr2)
Onde
expr1 e expr2 são os dois valores para comparar. O valor de retorno é expr2 subtraído de expr1 . Exemplo básico
Aqui está um exemplo para demonstrar.
SELECT TIMEDIFF('11:35:25', '10:35:25');
Resultado:
+----------------------------------+
| TIMEDIFF('11:35:25', '10:35:25') |
+----------------------------------+
| 01:00:00 |
+----------------------------------+
Tempo decorrido
O valor do tempo pode representar o tempo decorrido, portanto, não está limitado a menos de 24 horas.
SELECT TIMEDIFF('500:35:25', '10:35:25');
Resultado:
+-----------------------------------+
| TIMEDIFF('500:35:25', '10:35:25') |
+-----------------------------------+
| 490:00:00 |
+-----------------------------------+
Diferença horária negativa
Se o segundo valor for maior que o primeiro, você obterá um valor negativo para a diferença de tempo. Isso é perfeitamente válido.
SELECT TIMEDIFF('10:35:25', '500:35:25');
Resultado:
+-----------------------------------+
| TIMEDIFF('10:35:25', '500:35:25') |
+-----------------------------------+
| -490:00:00 |
+-----------------------------------+
Valores de data e hora
Aqui está um exemplo que usa valores de data e hora como argumentos.
SELECT TIMEDIFF('2021-02-01 10:35:25', '2021-01-01 10:35:25');
Resultado:
+--------------------------------------------------------+
| TIMEDIFF('2021-02-01 10:35:25', '2021-01-01 10:35:25') |
+--------------------------------------------------------+
| 744:00:00 |
+--------------------------------------------------------+
Observe que ambos os argumentos devem ser do mesmo tipo. Portanto, você não pode ter um valor de hora para o primeiro e um valor de data e hora para o segundo (e vice-versa).
Observe também que o tipo de dados de hora só pode estar no intervalo -838:59:59 para 838:59:59 . Portanto, o seguinte não funciona:
SELECT TIMEDIFF('2000-01-01 10:35:25', '2021-01-01 10:35:25');
Resultado:
+--------------------------------------------------------+
| TIMEDIFF('2000-01-01 10:35:25', '2021-01-01 10:35:25') |
+--------------------------------------------------------+
| -838:59:59 |
+--------------------------------------------------------+
1 row in set, 1 warning (0.00 sec)
Nesse caso, obtemos um resultado incorreto e um aviso.