Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Exemplos de TIMEDIFF() – MySQL


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.