In MariaDB, TIMEDIFF() is een ingebouwde datum- en tijdfunctie die het verschil tussen twee tijdwaarden of datetime-waarden retourneert, uitgedrukt als een tijdwaarde.
Het is vergelijkbaar met de DATEDIFF() functie, behalve dat DATEDIFF() De retourwaarde wordt uitgedrukt in dagen.
TIMEDIFF() accepteert twee argumenten, die beide time- of datetime-expressies zijn. Vervolgens wordt de tweede keer van de eerste afgetrokken.
Syntaxis
De syntaxis gaat als volgt:
TIMEDIFF(expr1,expr2)
Het retourneert dan expr1 - expr2 .
Voorbeeld
Hier is een voorbeeld:
SELECT TIMEDIFF('10:30:17', '1:10:10'); Resultaat:
+---------------------------------+
| TIMEDIFF('10:30:17', '1:10:10') |
+---------------------------------+
| 09:20:07 |
+---------------------------------+ Hier is het weer, maar met de tijdwaarden omgewisseld:
SELECT TIMEDIFF('1:10:10', '10:30:17'); Resultaat:
+---------------------------------+
| TIMEDIFF('1:10:10', '10:30:17') |
+---------------------------------+
| -09:20:07 |
+---------------------------------+ Datum/tijd-waarden
Hier is een voorbeeld dat datetime-waarden gebruikt:
SELECT TIMEDIFF('2030-01-25 00:00:00', '2030-01-20 23:59:59'); Resultaat:
+--------------------------------------------------------+
| TIMEDIFF('2030-01-25 00:00:00', '2030-01-20 23:59:59') |
+--------------------------------------------------------+
| 96:00:01 |
+--------------------------------------------------------+ Gemengde waardetypes
Terwijl TIMEDIFF() werkt op zowel tijd- als datetime-waarden, beide argumenten moeten van hetzelfde type zijn. Het mengen van typen resulteert in null .
Voorbeeld:
SELECT TIMEDIFF('2030-01-25 00:00:00', '23:59:59'); Resultaat:
+---------------------------------------------+
| TIMEDIFF('2030-01-25 00:00:00', '23:59:59') |
+---------------------------------------------+
| NULL |
+---------------------------------------------+ Buiten bereik
Het bereik voor tijdwaarden is '-838:59:59.999999' naar '838:59:59.999999' . Als het resultaat buiten dat bereik valt, is de geretourneerde waarde de bovengrens van het relevante bereik en wordt er een waarschuwing geretourneerd.
Voorbeeld:
SELECT TIMEDIFF('2040-01-25 00:00:00', '2030-01-25 23:59:59'); Resultaat:
+--------------------------------------------------------+
| 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) Laten we eens kijken naar de waarschuwing:
SHOW WARNINGS; Resultaat:
+---------+------+-----------------------------------------------+ | Level | Code | Message | +---------+------+-----------------------------------------------+ | Warning | 1292 | Truncated incorrect time value: '87624:00:01' | +---------+------+-----------------------------------------------+
Huidige datum
Hier passeren we NOW() als tweede argument:
SELECT
NOW(),
TIMEDIFF('2021-05-27 10:00:00', NOW()); Resultaat:
+---------------------+----------------------------------------+
| NOW() | TIMEDIFF('2021-05-27 10:00:00', NOW()) |
+---------------------+----------------------------------------+
| 2021-05-27 14:29:38 | -04:29:38 |
+---------------------+----------------------------------------+ Ongeldige argumenten
Bij het doorgeven van ongeldige argumenten, TIMEEDIFF() retourneert null :
SELECT TIMEDIFF('Homer', 'Simpson'); Resultaat:
+------------------------------+
| TIMEDIFF('Homer', 'Simpson') |
+------------------------------+
| NULL |
+------------------------------+ Ontbrekend argument
TIMEDIFF() . aanroepen het verkeerde aantal argumenten, of zonder het doorgeven van argumenten, resulteert in een fout:
SELECT TIMEDIFF(); Resultaat:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'TIMEDIFF'
En:
SELECT TIMEDIFF('2030-05-21'); Resultaat:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'TIMEDIFF'