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.