MySQL TIMEDIFF()
funktion returnerer forskellen mellem to tid- eller datotidsværdier.
Måden det fungerer på er, at du angiver de to værdier, der skal sammenlignes, og TIMEDIFF()
trækker den anden værdi fra den første og returnerer derefter resultatet som en tidsværdi.
Syntaks
Syntaksen ser sådan ud:
TIMEDIFF(expr1,expr2)
Hvor expr1
og expr2
er de to værdier, der skal sammenlignes. Returværdien er expr2
trukket fra expr1
.
Grundlæggende eksempel
Her er et eksempel til at demonstrere.
SELECT TIMEDIFF('11:35:25', '10:35:25');
Resultat:
+----------------------------------+ | TIMEDIFF('11:35:25', '10:35:25') | +----------------------------------+ | 01:00:00 | +----------------------------------+
Forløbet tid
Tidsværdien kan repræsentere forløbet tid, så den er ikke begrænset til at være mindre end 24 timer.
SELECT TIMEDIFF('500:35:25', '10:35:25');
Resultat:
+-----------------------------------+ | TIMEDIFF('500:35:25', '10:35:25') | +-----------------------------------+ | 490:00:00 | +-----------------------------------+
Negativ tidsforskel
Hvis den anden værdi er større end den første, får du en negativ værdi for tidsforskellen. Dette er helt gyldigt.
SELECT TIMEDIFF('10:35:25', '500:35:25');
Resultat:
+-----------------------------------+ | TIMEDIFF('10:35:25', '500:35:25') | +-----------------------------------+ | -490:00:00 | +-----------------------------------+
Dato-tidsværdier
Her er et eksempel, der bruger datetime-værdier som argumenter.
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 | +--------------------------------------------------------+
Bemærk, at begge argumenter skal være af samme type. Så du kan ikke have en tidsværdi for den første og en dato-tidsværdi for den anden (og omvendt).
Bemærk også, at tidsdatatypen kun kan være i området -838:59:59 til 838:59:59 . Derfor virker følgende ikke:
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 dette tilfælde får vi et forkert resultat og en advarsel.