MySQL TIMEDIFF()
funktion returnerar skillnaden mellan två värden för tid eller datum.
Så det fungerar är att du anger de två värdena som ska jämföras, och TIMEDIFF()
subtraherar det andra värdet från det första och returnerar sedan resultatet som ett tidsvärde.
Syntax
Syntaxen ser ut så här:
TIMEDIFF(expr1,expr2)
Där expr1
och expr2
är de två värdena som ska jämföras. Returvärdet är expr2
subtraherad från expr1
.
Grundläggande exempel
Här är ett exempel att visa.
SELECT TIMEDIFF('11:35:25', '10:35:25');
Resultat:
+----------------------------------+ | TIMEDIFF('11:35:25', '10:35:25') | +----------------------------------+ | 01:00:00 | +----------------------------------+
Förfluten tid
Tidsvärdet kan representera förfluten tid, så det är inte begränsat till att vara mindre än 24 timmar.
SELECT TIMEDIFF('500:35:25', '10:35:25');
Resultat:
+-----------------------------------+ | TIMEDIFF('500:35:25', '10:35:25') | +-----------------------------------+ | 490:00:00 | +-----------------------------------+
Negativ tidsskillnad
Om det andra värdet är större än det första får du ett negativt värde för tidsskillnaden. Detta är helt giltigt.
SELECT TIMEDIFF('10:35:25', '500:35:25');
Resultat:
+-----------------------------------+ | TIMEDIFF('10:35:25', '500:35:25') | +-----------------------------------+ | -490:00:00 | +-----------------------------------+
Datetime-värden
Här är ett exempel som använder datetime-värden som argument.
SELECT TIMEDIFF('2021-02-01 10:35:25', '2021-01-01 10:35:25');
Resultat:
+--------------------------------------------------------+ | TIMEDIFF('2021-02-01 10:35:25', '2021-01-01 10:35:25') | +--------------------------------------------------------+ | 744:00:00 | +--------------------------------------------------------+
Observera att båda argumenten måste vara av samma typ. Så du kan inte ha ett tidsvärde för den första och ett datum och tid för den andra (och vice versa).
Observera också att tidsdatatypen endast kan vara inom intervallet -838:59:59 till 838:59:59 . Därför fungerar inte följande:
SELECT TIMEDIFF('2000-01-01 10:35:25', '2021-01-01 10:35:25');
Resultat:
+--------------------------------------------------------+ | 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)
I det här fallet får vi ett felaktigt resultat och en varning.