sql >> Databasteknik >  >> RDS >> MariaDB

Hur TIMEDIFF() fungerar i MariaDB

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'

  1. En översikt över databasdiagramverktyg tillgängliga för PostgreSQL

  2. hur lägger man till anpassad adapter till aktiviteten för att få listan att visas i aktiviteten?

  3. [Video] Introduktion till JSON-datatyper i PostgreSQL

  4. Old Style Oracle Outer Join-syntax - Varför hitta (+) på höger sida av likhetstecknet i en Left Outer-join?