De MySQL TIMEDIFF() functie retourneert het verschil tussen twee tijd- of datetime-waarden.
De manier waarop het werkt, is dat u de twee waarden opgeeft om te vergelijken, en TIMEDIFF() trekt de tweede waarde van de eerste af en retourneert het resultaat als een tijdswaarde.
Syntaxis
De syntaxis gaat als volgt:
TIMEDIFF(expr1,expr2)
Waar expr1 en expr2 zijn de twee waarden om te vergelijken. De retourwaarde is expr2 afgetrokken van expr1 .
Basisvoorbeeld
Hier is een voorbeeld om te demonstreren.
SELECT TIMEDIFF('11:35:25', '10:35:25');
Resultaat:
+----------------------------------+
| TIMEDIFF('11:35:25', '10:35:25') |
+----------------------------------+
| 01:00:00 |
+----------------------------------+
Verstreken tijd
De tijdwaarde kan de verstreken tijd vertegenwoordigen, dus het is niet beperkt tot minder dan 24 uur.
SELECT TIMEDIFF('500:35:25', '10:35:25');
Resultaat:
+-----------------------------------+
| TIMEDIFF('500:35:25', '10:35:25') |
+-----------------------------------+
| 490:00:00 |
+-----------------------------------+
Negatief tijdsverschil
Als de tweede waarde groter is dan de eerste, krijg je een negatieve waarde voor het tijdsverschil. Dit is volkomen geldig.
SELECT TIMEDIFF('10:35:25', '500:35:25');
Resultaat:
+-----------------------------------+
| TIMEDIFF('10:35:25', '500:35:25') |
+-----------------------------------+
| -490:00:00 |
+-----------------------------------+
Datum/tijd-waarden
Hier is een voorbeeld dat datetime-waarden als argumenten gebruikt.
SELECT TIMEDIFF('2021-02-01 10:35:25', '2021-01-01 10:35:25');
Resultaat:
+--------------------------------------------------------+
| TIMEDIFF('2021-02-01 10:35:25', '2021-01-01 10:35:25') |
+--------------------------------------------------------+
| 744:00:00 |
+--------------------------------------------------------+
Merk op dat beide argumenten van hetzelfde type moeten zijn. U kunt dus geen tijdwaarde hebben voor de eerste en een datetime-waarde voor de tweede (en vice versa).
Houd er ook rekening mee dat het tijdgegevenstype alleen kan liggen in het bereik -838:59:59 naar 838:59:59 . Daarom werkt het volgende niet:
SELECT TIMEDIFF('2000-01-01 10:35:25', '2021-01-01 10:35:25');
Resultaat:
+--------------------------------------------------------+
| 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)
In dit geval krijgen we een onjuist resultaat en een waarschuwing.