MySQL TIMEDIFF()
renvoie la différence entre deux valeurs d'heure ou de date/heure.
La façon dont cela fonctionne est, vous fournissez les deux valeurs à comparer, et TIMEDIFF()
soustrait la deuxième valeur de la première, puis renvoie le résultat sous forme de valeur temporelle.
Syntaxe
La syntaxe ressemble à ceci :
TIMEDIFF(expr1,expr2)
Où expr1
et expr2
sont les deux valeurs à comparer. La valeur de retour est expr2
soustrait de expr1
.
Exemple de base
Voici un exemple pour illustrer.
SELECT TIMEDIFF('11:35:25', '10:35:25');
Résultat :
+----------------------------------+ | TIMEDIFF('11:35:25', '10:35:25') | +----------------------------------+ | 01:00:00 | +----------------------------------+
Temps écoulé
La valeur de temps peut représenter le temps écoulé, elle n'est donc pas limitée à moins de 24 heures.
SELECT TIMEDIFF('500:35:25', '10:35:25');
Résultat :
+-----------------------------------+ | TIMEDIFF('500:35:25', '10:35:25') | +-----------------------------------+ | 490:00:00 | +-----------------------------------+
Décalage horaire négatif
Si la deuxième valeur est supérieure à la première, vous obtiendrez une valeur négative pour le décalage horaire. C'est parfaitement valable.
SELECT TIMEDIFF('10:35:25', '500:35:25');
Résultat :
+-----------------------------------+ | TIMEDIFF('10:35:25', '500:35:25') | +-----------------------------------+ | -490:00:00 | +-----------------------------------+
Valeurs DateHeure
Voici un exemple qui utilise des valeurs datetime comme arguments.
SELECT TIMEDIFF('2021-02-01 10:35:25', '2021-01-01 10:35:25');
Résultat :
+--------------------------------------------------------+ | TIMEDIFF('2021-02-01 10:35:25', '2021-01-01 10:35:25') | +--------------------------------------------------------+ | 744:00:00 | +--------------------------------------------------------+
Notez que les deux arguments doivent être du même type. Vous ne pouvez donc pas avoir une valeur temporelle pour le premier et une valeur datetime pour le second (et vice-versa).
Notez également que le type de données d'heure ne peut être que dans la plage -838:59:59 à 838:59:59 . Par conséquent, ce qui suit ne fonctionne pas :
SELECT TIMEDIFF('2000-01-01 10:35:25', '2021-01-01 10:35:25');
Résultat :
+--------------------------------------------------------+ | 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)
Dans ce cas, nous obtenons un résultat incorrect et un avertissement.