MariaDB
 sql >> Base de Dados >  >> RDS >> MariaDB

Como TIMEDIFF() funciona no MariaDB


No MariaDB, TIMEDIFF() é uma função de data e hora integrada que retorna a diferença entre dois valores de hora ou valores de data e hora, expressos como um valor de hora.

É semelhante ao DATEDIFF() função, exceto que DATEDIFF() O valor de retorno é expresso em dias.

TIMEDIFF() aceita dois argumentos, ambos são expressões de hora ou data e hora. Em seguida, subtrai a segunda vez da primeira.

Sintaxe


A sintaxe fica assim:
TIMEDIFF(expr1,expr2) 

Em seguida, ele retorna expr1 - expr2 .

Exemplo


Aqui está um exemplo:
SELECT TIMEDIFF('10:30:17', '1:10:10'); 

Resultado:
+---------------------------------+| TIMEDIFF('10:30:17', '1:10:10') |+------------------------------- ---+| 09:20:07 |+------------------------------------------------+

Aqui está novamente, mas com os valores de tempo trocados:
SELECT TIMEDIFF('1:10:10', '10:30:17'); 

Resultado:
+---------------------------------+| TIMEDIFF('1:10:10', '10:30:17') |+------------------------------- ---+| -09:20:07 |+------------------------------------------------+

Valores de data e hora


Aqui está um exemplo que usa valores de data e hora:
SELECT TIMEDIFF('2030-01-25 00:00:00', '2030-01-20 23:59:59'); 

Resultado:
+---------------------------------------------- ----------+| TIMEDIFF('2030-01-25 00:00:00', '2030-01-20 23:59:59') |+--------------------- ------------------------------------+| 96:00:01 |+---------------------------------------------------------- -------------+

Tipos de valores mistos


Enquanto TIMEDIFF() funciona em valores de hora e data e hora, ambos os argumentos devem ser do mesmo tipo. A mistura de tipos resulta em null .

Exemplo:
SELECT TIMEDIFF('2030-01-25 00:00:00', '23:59:59'); 

Resultado:
+---------------------------------------------+ | TIMEDIFF('2030-01-25 00:00:00', '23:59:59') |+------------------------- --------------------+| NULO |+---------------------------------------------+ 

Fora do alcance


O intervalo para valores de tempo é '-838:59:59.999999' para '838:59:59.999999' . Se o resultado estiver fora desse intervalo, o valor de retorno será o limite superior de seu intervalo relevante e um aviso será retornado.

Exemplo:
SELECT TIMEDIFF('2040-01-25 00:00:00', '2030-01-25 23:59:59'); 

Resultado:
+---------------------------------------------- ----------+| TIMEDIFF('2040-01-25 00:00:00', '2030-01-25 23:59:59') |+--------------------- ------------------------------------+| 838:59:59 |+---------------------------------------------------------- -------------+1 linha no conjunto, 1 aviso (0,003 seg)

Vejamos o aviso:
SHOW WARNINGS; 

Resultado:
+---------+------+----------------------------- ------------------+| Nível | Código | Mensagem |+---------+------+------------------- ------------------+| Aviso | 1292 | Valor de tempo incorreto truncado:'87624:00:01' |+---------+------+------------------- ----------------------------+

Data atual


Aqui, passamos NOW() como segundo argumento:
SELECT 
    NOW(),
    TIMEDIFF('2021-05-27 10:00:00', NOW()); 

Resultado:
+---------------------+------------------------ ----------------+| AGORA() | TIMEDIFF('2021-05-27 10:00:00', AGORA()) |+---------------------+------- ----------------------------------+| 2021-05-27 14:29:38 | -04:29:38 |+---------------------+----------------------- --------------------+

Argumentos inválidos


Quando passados ​​argumentos inválidos, TIMEEDIFF() retorna null :
SELECT TIMEDIFF('Homer', 'Simpson'); 

Resultado:
+------------------------------+| TIMEDIFF('Homer', 'Simpson') |+------------------------------+| NULL |+------------------------------+

Argumento ausente


Chamando TIMEDIFF() o número errado de argumentos, ou sem passar nenhum argumento, resulta em um erro:
SELECT TIMEDIFF(); 

Resultado:
ERRO 1582 (42000):contagem de parâmetro incorreta na chamada para a função nativa 'TIMEDIFF'

E:
SELECT TIMEDIFF('2030-05-21'); 

Resultado:
ERRO 1582 (42000):contagem de parâmetro incorreta na chamada para a função nativa 'TIMEDIFF'