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í.