sql >> Database teknologi >  >> RDS >> MariaDB

Sådan fungerer TIMEDIFF() i MariaDB

I MariaDB, TIMEDIFF() er en indbygget dato- og tidsfunktion, der returnerer forskellen mellem to tidsværdier eller datetime-værdier, udtrykt som en tidsværdi.

Det ligner DATEDIFF() funktion, bortset fra at DATEDIFF() ’s returværdi er udtrykt i dage.

TIMEDIFF() accepterer to argumenter, som begge er udtryk for tid eller dato. Den trækker derefter anden gang fra den første.

Syntaks

Syntaksen ser sådan ud:

TIMEDIFF(expr1,expr2)

Det returnerer derefter expr1 - expr2 .

Eksempel

Her er et eksempel:

SELECT TIMEDIFF('10:30:17', '1:10:10');

Resultat:

+---------------------------------+
| TIMEDIFF('10:30:17', '1:10:10') |
+---------------------------------+
| 09:20:07                        |
+---------------------------------+

Her er den igen, men med tidsværdierne byttet rundt:

SELECT TIMEDIFF('1:10:10', '10:30:17');

Resultat:

+---------------------------------+
| TIMEDIFF('1:10:10', '10:30:17') |
+---------------------------------+
| -09:20:07                       |
+---------------------------------+

Dato-tidsværdier

Her er et eksempel, der bruger datetime-værdier:

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                                               |
+--------------------------------------------------------+

Blandet værdityper

Mens TIMEDIFF() fungerer på både klokkeslæt og datetime-værdier, begge argumenter skal være af samme type. Blandingstyper resulterer i null .

Eksempel:

SELECT TIMEDIFF('2030-01-25 00:00:00', '23:59:59');

Resultat:

+---------------------------------------------+
| TIMEDIFF('2030-01-25 00:00:00', '23:59:59') |
+---------------------------------------------+
| NULL                                        |
+---------------------------------------------+

Udenfor rækkevidde

Intervallet for tidsværdier er '-838:59:59.999999' til '838:59:59.999999' . Hvis resultatet er uden for dette interval, er returværdien den øvre grænse for dets relevante interval, og der returneres en advarsel.

Eksempel:

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)

Lad os tage et kig på advarslen:

SHOW WARNINGS;

Resultat:

+---------+------+-----------------------------------------------+
| Level   | Code | Message                                       |
+---------+------+-----------------------------------------------+
| Warning | 1292 | Truncated incorrect time value: '87624:00:01' |
+---------+------+-----------------------------------------------+

Aktuel dato

Her sender vi NOW() som det andet argument:

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                              |
+---------------------+----------------------------------------+

Ugyldige argumenter

Når alle ugyldige argumenter sendes, TIMEEDIFF() returnerer null :

SELECT TIMEDIFF('Homer', 'Simpson');

Resultat:

+------------------------------+
| TIMEDIFF('Homer', 'Simpson') |
+------------------------------+
| NULL                         |
+------------------------------+

Manglende argument

Kalder TIMEDIFF() det forkerte antal argumenter, eller uden at sende nogen argumenter, resulterer i en fejl:

SELECT TIMEDIFF();

Resultat:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'TIMEDIFF'

Og:

SELECT TIMEDIFF('2030-05-21');

Resultat:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'TIMEDIFF'

  1. SQL Query Where Column ='' returnerer Emoji-tegn 🎃 og 🍰

  2. Hvordan undgår man divider med nul fejl i SQL?

  3. Bedste tilgang til at fjerne tid en del af datetime i SQL Server

  4. Sådan fungerer TRIM()-funktionen i MySQL