I MariaDB, TIMEDIFF() är en inbyggd datum- och tidsfunktion som returnerar skillnaden mellan två tidsvärden eller datetime-värden, uttryckt som ett tidsvärde.
Det liknar DATEDIFF() funktion, förutom att DATEDIFF() 's returvärde uttrycks i dagar.
TIMEDIFF() accepterar två argument, som båda är uttryck för tid eller datum och tid. Den subtraherar sedan andra gången från den första.
Syntax
Syntaxen ser ut så här:
TIMEDIFF(expr1,expr2)
Den returnerar sedan expr1 - expr2 .
Exempel
Här är ett exempel:
SELECT TIMEDIFF('10:30:17', '1:10:10'); Resultat:
+---------------------------------+
| TIMEDIFF('10:30:17', '1:10:10') |
+---------------------------------+
| 09:20:07 |
+---------------------------------+ Här är den igen, men med tidsvärdena ombytta:
SELECT TIMEDIFF('1:10:10', '10:30:17'); Resultat:
+---------------------------------+
| TIMEDIFF('1:10:10', '10:30:17') |
+---------------------------------+
| -09:20:07 |
+---------------------------------+ Datetime-värden
Här är ett exempel som använder datetime-värden:
SELECT TIMEDIFF('2030-01-25 00:00:00', '2030-01-20 23:59:59'); Resultat:
+--------------------------------------------------------+
| TIMEDIFF('2030-01-25 00:00:00', '2030-01-20 23:59:59') |
+--------------------------------------------------------+
| 96:00:01 |
+--------------------------------------------------------+ Blandade värdetyper
Medan TIMEDIFF() fungerar på både tid och datum och tid, båda argumenten måste vara av samma typ. Blandningstyper resulterar i null .
Exempel:
SELECT TIMEDIFF('2030-01-25 00:00:00', '23:59:59'); Resultat:
+---------------------------------------------+
| TIMEDIFF('2030-01-25 00:00:00', '23:59:59') |
+---------------------------------------------+
| NULL |
+---------------------------------------------+ Utanför räckvidd
Intervallet för tidsvärden är '-838:59:59.999999' till '838:59:59.999999' . Om resultatet ligger utanför det intervallet är returvärdet den övre gränsen för dess relevanta intervall och en varning returneras.
Exempel:
SELECT TIMEDIFF('2040-01-25 00:00:00', '2030-01-25 23:59:59'); Resultat:
+--------------------------------------------------------+
| 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) Låt oss ta en titt på varningen:
SHOW WARNINGS; Resultat:
+---------+------+-----------------------------------------------+ | Level | Code | Message | +---------+------+-----------------------------------------------+ | Warning | 1292 | Truncated incorrect time value: '87624:00:01' | +---------+------+-----------------------------------------------+
Aktuellt datum
Här skickar vi NOW() som det andra argumentet:
SELECT
NOW(),
TIMEDIFF('2021-05-27 10:00:00', NOW()); Resultat:
+---------------------+----------------------------------------+
| NOW() | TIMEDIFF('2021-05-27 10:00:00', NOW()) |
+---------------------+----------------------------------------+
| 2021-05-27 14:29:38 | -04:29:38 |
+---------------------+----------------------------------------+ Ogiltiga argument
När alla ogiltiga argument har skickats, TIMEEDIFF() returnerar null :
SELECT TIMEDIFF('Homer', 'Simpson'); Resultat:
+------------------------------+
| TIMEDIFF('Homer', 'Simpson') |
+------------------------------+
| NULL |
+------------------------------+ Argument saknas
Anropar TIMEDIFF() fel antal argument, eller utan att skicka några argument, resulterar i ett fel:
SELECT TIMEDIFF(); Resultat:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'TIMEDIFF'
Och:
SELECT TIMEDIFF('2030-05-21'); Resultat:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'TIMEDIFF'