Dans MariaDB, TIMEDIFF()
est une fonction de date et d'heure intégrée qui renvoie la différence entre deux valeurs d'heure ou de date et d'heure, exprimée sous la forme d'une valeur d'heure.
C'est similaire au DATEDIFF()
fonction, sauf que DATEDIFF()
La valeur de retour de est exprimée en jours.
TIMEDIFF()
accepte deux arguments, qui sont tous deux des expressions d'heure ou de date/heure. Il soustrait ensuite la deuxième fois de la première.
Syntaxe
La syntaxe ressemble à ceci :
TIMEDIFF(expr1,expr2)
Il renvoie ensuite expr1 - expr2
.
Exemple
Voici un exemple :
SELECT TIMEDIFF('10:30:17', '1:10:10');
Résultat :
+---------------------------------------------+| HEUREDIFF('10:30:17', '1:10:10') |+------------------------------ ---+| 09:20:07 |+---------------------------------------------+
Le voici à nouveau, mais avec les valeurs de temps inversées :
SELECT TIMEDIFF('1:10:10', '10:30:17');
Résultat :
+---------------------------------------------+| HEUREDIFF('1:10:10', '10:30:17') |+------------------------------ ---+| -09:20:07 |+---------------------------------------------+
Valeurs DateHeure
Voici un exemple qui utilise des valeurs datetime :
SELECT TIMEDIFF('2030-01-25 00:00:00', '2030-01-20 23:59:59');
Résultat :
+------------------------------------------------------------ ----------+| HEUREDIFF('2030-01-25 00:00:00', '2030-01-20 23:59:59') |+-------------------- -----------------------------------------+| 96:00:01 |+------------------------------------------------------- -------------+
Types de valeurs mixtes
Tandis que TIMEDIFF()
fonctionne à la fois sur les valeurs d'heure et de date/heure, les deux arguments doivent être du même type. Le mélange des types donne null
.
Exemple :
SELECT TIMEDIFF('2030-01-25 00:00:00', '23:59:59');
Résultat :
+---------------------------------------------+ | HEUREDIFF('2030-01-25 00:00:00', '23:59:59') |+------------------------- --------------------+| NUL |+---------------------------------------------+Hors de portée
La plage des valeurs temporelles est
'-838:59:59.999999'
à'838:59:59.999999'
. Si le résultat est en dehors de cette plage, la valeur de retour est la limite supérieure de sa plage pertinente et un avertissement est renvoyé.Exemple :
SELECT TIMEDIFF('2040-01-25 00:00:00', '2030-01-25 23:59:59');
Résultat :
+------------------------------------------------------------ ----------+| HEUREDIFF('2040-01-25 00:00:00', '2030-01-25 23:59:59') |+-------------------- -----------------------------------------+| 838:59:59 |+------------------------------------------------------- -------------+1 ligne dans l'ensemble, 1 avertissement (0,003 sec)Examinons l'avertissement :
SHOW WARNINGS;
Résultat :
+---------+------+---------------------------------- ------------------+| Niveau | Codage | Message |+---------+------+------------------------------ -----------------+| Avertissement | 1292 | Heure incorrecte tronquée :'87624:00:01' |+---------+------+-------- ----------------------------+Date actuelle
Ici, nous passons
NOW()
comme deuxième argument :SELECT NOW(), TIMEDIFF('2021-05-27 10:00:00', NOW());
Résultat :
+---------------------+------------------------ ----------------+| MAINTENANT() | TIMEDIFF('2021-05-27 10:00:00', MAINTENANT()) |+---------------------+------- ---------------------------------+| 2021-05-27 14:29:38 | -04:29:38 |+---------------------+-------------------- --------------------+Arguments invalides
Lorsqu'un argument invalide est passé,
TIMEEDIFF()
renvoienull
:SELECT TIMEDIFF('Homer', 'Simpson');
Résultat :
+------------------------------+| TIMEDIFF('Homère', 'Simpson') |+------------------------------+| NULL |+------------------------------+Argument manquant
Appel de
TIMEDIFF()
le mauvais nombre d'arguments, ou l'absence d'arguments, entraîne une erreur :SELECT TIMEDIFF();
Résultat :
ERREUR 1582 (42000) :Nombre de paramètres incorrect dans l'appel à la fonction native 'TIMEDIFF'Et :
SELECT TIMEDIFF('2030-05-21');
Résultat :
ERREUR 1582 (42000) :Nombre de paramètres incorrect dans l'appel à la fonction native 'TIMEDIFF'