V MariaDB, TIMEDIFF()
je vestavěná funkce data a času, která vrací rozdíl mezi dvěma hodnotami času nebo hodnotami data a času, vyjádřený jako hodnota času.
Je to podobné jako DATEDIFF()
funkce, kromě DATEDIFF()
Návratová hodnota je vyjádřena ve dnech.
TIMEDIFF()
přijímá dva argumenty, oba jsou výrazy času nebo data a času. Poté odečte druhý čas od prvního.
Syntaxe
Syntaxe vypadá takto:
TIMEDIFF(expr1,expr2)
Poté vrátí expr1 - expr2
.
Příklad
Zde je příklad:
SELECT TIMEDIFF('10:30:17', '1:10:10');
Výsledek:
+---------------------------------+| TIMEDIFF('10:30:17', '1:10:10') |+------------------------------- ---+| 09:20:07 |+---------------------------------+
Tady je to znovu, ale s prohozenými hodnotami času:
SELECT TIMEDIFF('1:10:10', '10:30:17');
Výsledek:
+---------------------------------+| TIMEDIFF('1:10:10', '10:30:17') |+------------------------------- ---+| -09:20:07 |+---------------------------------+
Hodnoty data a času
Zde je příklad, který používá hodnoty datetime:
SELECT TIMEDIFF('2030-01-25 00:00:00', '2030-01-20 23:59:59');
Výsledek:
+---------------------------------------------- ----------+| TIMEDIFF('2030-01-25 00:00:00', '2030-01-20 23:59:59') |+-------------------- ------------------------------------+| 96:00:01 |+------------------------------------------- -------------+
Smíšené typy hodnot
Zatímco TIMEDIFF()
funguje na hodnotách čas i datum a čas, oba argumenty musí být stejného typu. Výsledkem smísení typů je null
.
Příklad:
SELECT TIMEDIFF('2030-01-25 00:00:00', '23:59:59');
Výsledek:
+---------------------------------------------+ | TIMEDIFF('2030-01-25 00:00:00', '23:59:59') |+-------------------------- ---------------------+| NULL |+---------------------------------------------+Mimo rozsah
Rozsah pro časové hodnoty je
'-838:59:59.999999'
na'838:59:59.999999'
. Pokud je výsledek mimo tento rozsah, vrácená hodnota je horní mez příslušného rozsahu a je vráceno varování.Příklad:
SELECT TIMEDIFF('2040-01-25 00:00:00', '2030-01-25 23:59:59');
Výsledek:
+---------------------------------------------- ----------+| TIMEDIFF('2040-01-25 00:00:00', '2030-01-25 23:59:59') |+--------------------- ------------------------------------+| 838:59:59 |+------------------------------------------- -------------+1 řádek v sadě, 1 varování (0,003 s)Podívejme se na varování:
SHOW WARNINGS;
Výsledek:
+---------+------+----------------------------- ------------------+| Úroveň | Kód | Zpráva |+---------+------+------------------------------ ------------------+| Upozornění | 1292 | Zkrácená nesprávná časová hodnota:'87624:00:01' |+---------+------+------------------- ----------------------------+Aktuální datum
Zde předáme
NOW()
jako druhý argument:SELECT NOW(), TIMEDIFF('2021-05-27 10:00:00', NOW());
Výsledek:
+---------------------+------------------------ -----------------+| NYNÍ() | TIMEDIFF('2021-05-27 10:00:00', NOW()) |+----------------------+------- ---------------------------------+| 27.05.2021 14:29:38 | -04:29:38 |+---------------------+-------------------- --------------------+Neplatné argumenty
Po předání neplatných argumentů
TIMEEDIFF()
vrátínull
:SELECT TIMEDIFF('Homer', 'Simpson');
Výsledek:
+------------------------------+| TIMEDIFF('Homer', 'Simpson') |+------------------------------+| NULL |+------------------------------+Chybí argument
Volání
TIMEDIFF()
nesprávný počet argumentů nebo bez předání jakýchkoli argumentů vede k chybě:SELECT TIMEDIFF();
Výsledek:
CHYBA 1582 (42000):Nesprávný počet parametrů ve volání nativní funkce 'TIMEDIFF'A:
SELECT TIMEDIFF('2030-05-21');
Výsledek:
CHYBA 1582 (42000):Nesprávný počet parametrů ve volání nativní funkce 'TIMEDIFF'