Mysql
 sql >> Base de données >  >> RDS >> Mysql

Exemples TIMEDIFF() – MySQL

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)

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.