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'