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.