MySQL TIMEDIFF()
funkce vrací rozdíl mezi dvěma hodnotami času nebo data a času.
Funguje to tak, že zadáte dvě hodnoty k porovnání a TIMEDIFF()
odečte druhou hodnotu od první a vrátí výsledek jako časovou hodnotu.
Syntaxe
Syntaxe vypadá takto:
TIMEDIFF(expr1,expr2)
Kde expr1
a expr2
jsou dvě hodnoty k porovnání. Vrácená hodnota je expr2
odečteno od expr1
.
Základní příklad
Zde je příklad k demonstraci.
SELECT TIMEDIFF('11:35:25', '10:35:25');
Výsledek:
+----------------------------------+ | TIMEDIFF('11:35:25', '10:35:25') | +----------------------------------+ | 01:00:00 | +----------------------------------+
Uplynulý čas
Hodnota času může představovat uplynulý čas, takže není omezena na méně než 24 hodin.
SELECT TIMEDIFF('500:35:25', '10:35:25');
Výsledek:
+-----------------------------------+ | TIMEDIFF('500:35:25', '10:35:25') | +-----------------------------------+ | 490:00:00 | +-----------------------------------+
Záporný časový rozdíl
Pokud je druhá hodnota větší než první, dostanete zápornou hodnotu časového rozdílu. To je naprosto platné.
SELECT TIMEDIFF('10:35:25', '500:35:25');
Výsledek:
+-----------------------------------+ | TIMEDIFF('10:35:25', '500:35:25') | +-----------------------------------+ | -490:00:00 | +-----------------------------------+
Hodnoty data a času
Zde je příklad, který používá jako argumenty hodnoty datetime.
SELECT TIMEDIFF('2021-02-01 10:35:25', '2021-01-01 10:35:25');
Výsledek:
+--------------------------------------------------------+ | TIMEDIFF('2021-02-01 10:35:25', '2021-01-01 10:35:25') | +--------------------------------------------------------+ | 744:00:00 | +--------------------------------------------------------+
Všimněte si, že oba argumenty musí být stejného typu. Nemůžete tedy mít hodnotu času pro první a hodnotu data a času pro druhou (a naopak).
Upozorňujeme také, že typ časových dat může být pouze v rozsahu -838:59:59 na 838:59:59 . Proto nefunguje následující:
SELECT TIMEDIFF('2000-01-01 10:35:25', '2021-01-01 10:35:25');
Výsledek:
+--------------------------------------------------------+ | 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)
V tomto případě dostaneme nesprávný výsledek a varování.