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.