W MariaDB, TIMEDIFF() to wbudowana funkcja daty i czasu, która zwraca różnicę między dwiema wartościami czasu lub wartości daty i godziny, wyrażoną jako wartość czasu.
Jest podobny do DATEDIFF() funkcji, z wyjątkiem tego, że DATEDIFF() Zwracana wartość jest wyrażona w dniach.
TIMEDIFF() akceptuje dwa argumenty, z których oba są wyrażeniami czasu lub daty i godziny. Następnie odejmuje drugi czas od pierwszego.
Składnia
Składnia wygląda tak:
TIMEDIFF(expr1,expr2)
Następnie zwraca expr1 - expr2 .
Przykład
Oto przykład:
SELECT TIMEDIFF('10:30:17', '1:10:10'); Wynik:
+---------------------------------+
| TIMEDIFF('10:30:17', '1:10:10') |
+---------------------------------+
| 09:20:07 |
+---------------------------------+ Oto znowu, ale z zamienionymi wartościami czasu:
SELECT TIMEDIFF('1:10:10', '10:30:17'); Wynik:
+---------------------------------+
| TIMEDIFF('1:10:10', '10:30:17') |
+---------------------------------+
| -09:20:07 |
+---------------------------------+ Wartości daty i godziny
Oto przykład wykorzystujący wartości daty i godziny:
SELECT TIMEDIFF('2030-01-25 00:00:00', '2030-01-20 23:59:59'); Wynik:
+--------------------------------------------------------+
| TIMEDIFF('2030-01-25 00:00:00', '2030-01-20 23:59:59') |
+--------------------------------------------------------+
| 96:00:01 |
+--------------------------------------------------------+ Różne typy wartości
Podczas gdy TIMEDIFF() działa zarówno na wartościach czasu, jak i daty i godziny, oba argumenty muszą być tego samego typu. Mieszanie typów daje w wyniku null .
Przykład:
SELECT TIMEDIFF('2030-01-25 00:00:00', '23:59:59'); Wynik:
+---------------------------------------------+
| TIMEDIFF('2030-01-25 00:00:00', '23:59:59') |
+---------------------------------------------+
| NULL |
+---------------------------------------------+ Poza zasięgiem
Zakres wartości czasu to '-838:59:59.999999' do '838:59:59.999999' . Jeśli wynik znajduje się poza tym zakresem, zwracana wartość jest górną granicą odpowiedniego zakresu i zwracane jest ostrzeżenie.
Przykład:
SELECT TIMEDIFF('2040-01-25 00:00:00', '2030-01-25 23:59:59'); Wynik:
+--------------------------------------------------------+
| TIMEDIFF('2040-01-25 00:00:00', '2030-01-25 23:59:59') |
+--------------------------------------------------------+
| 838:59:59 |
+--------------------------------------------------------+
1 row in set, 1 warning (0.003 sec) Rzućmy okiem na ostrzeżenie:
SHOW WARNINGS; Wynik:
+---------+------+-----------------------------------------------+ | Level | Code | Message | +---------+------+-----------------------------------------------+ | Warning | 1292 | Truncated incorrect time value: '87624:00:01' | +---------+------+-----------------------------------------------+
Aktualna data
Tutaj przekazujemy NOW() jako drugi argument:
SELECT
NOW(),
TIMEDIFF('2021-05-27 10:00:00', NOW()); Wynik:
+---------------------+----------------------------------------+
| NOW() | TIMEDIFF('2021-05-27 10:00:00', NOW()) |
+---------------------+----------------------------------------+
| 2021-05-27 14:29:38 | -04:29:38 |
+---------------------+----------------------------------------+ Nieprawidłowe argumenty
Po przekazaniu jakichkolwiek nieprawidłowych argumentów, TIMEEDIFF() zwraca null :
SELECT TIMEDIFF('Homer', 'Simpson'); Wynik:
+------------------------------+
| TIMEDIFF('Homer', 'Simpson') |
+------------------------------+
| NULL |
+------------------------------+ Brakujący argument
Wywołanie TIMEDIFF() zła liczba argumentów lub bez przekazywania żadnych argumentów skutkuje błędem:
SELECT TIMEDIFF(); Wynik:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'TIMEDIFF'
Oraz:
SELECT TIMEDIFF('2030-05-21'); Wynik:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'TIMEDIFF'