MySQL TIMEDIFF()
funkcja zwraca różnicę między dwiema wartościami czasu lub daty i czasu.
Działa to tak, że podajesz dwie wartości do porównania i TIMEDIFF()
odejmuje drugą wartość od pierwszej, a następnie zwraca wynik jako wartość czasu.
Składnia
Składnia wygląda tak:
TIMEDIFF(expr1,expr2)
Gdzie expr1
i expr2
to dwie wartości do porównania. Zwracana wartość to expr2
odjęte od expr1
.
Przykład podstawowy
Oto przykład do zademonstrowania.
SELECT TIMEDIFF('11:35:25', '10:35:25');
Wynik:
+----------------------------------+ | TIMEDIFF('11:35:25', '10:35:25') | +----------------------------------+ | 01:00:00 | +----------------------------------+
Czas, który upłynął
Wartość czasu może reprezentować upływ czasu, więc nie jest ograniczona do mniej niż 24 godzin.
SELECT TIMEDIFF('500:35:25', '10:35:25');
Wynik:
+-----------------------------------+ | TIMEDIFF('500:35:25', '10:35:25') | +-----------------------------------+ | 490:00:00 | +-----------------------------------+
Ujemna różnica czasu
Jeśli druga wartość jest większa niż pierwsza, otrzymasz ujemną wartość różnicy czasu. Jest to całkowicie ważne.
SELECT TIMEDIFF('10:35:25', '500:35:25');
Wynik:
+-----------------------------------+ | TIMEDIFF('10:35:25', '500:35:25') | +-----------------------------------+ | -490:00:00 | +-----------------------------------+
Wartości daty i godziny
Oto przykład, który używa wartości daty i godziny jako argumentów.
SELECT TIMEDIFF('2021-02-01 10:35:25', '2021-01-01 10:35:25');
Wynik:
+--------------------------------------------------------+ | TIMEDIFF('2021-02-01 10:35:25', '2021-01-01 10:35:25') | +--------------------------------------------------------+ | 744:00:00 | +--------------------------------------------------------+
Zauważ, że oba argumenty muszą być tego samego typu. Więc nie możesz mieć wartości czasu dla pierwszego i wartości daty i czasu dla drugiego (i odwrotnie).
Pamiętaj też, że typ danych czas może należeć tylko do zakresu -838:59:59 do 838:59:59 . Dlatego poniższe nie działa:
SELECT TIMEDIFF('2000-01-01 10:35:25', '2021-01-01 10:35:25');
Wynik:
+--------------------------------------------------------+ | 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)
W takim przypadku otrzymujemy niepoprawny wynik i ostrzeżenie.