MariaDB
 sql >> Datenbank >  >> RDS >> MariaDB

Wie TIMEDIFF() in MariaDB funktioniert

In MariaDB TIMEDIFF() ist eine integrierte Datums- und Zeitfunktion, die die Differenz zwischen zwei Zeitwerten oder Datumszeitwerten zurückgibt, ausgedrückt als Zeitwert.

Es ähnelt dem DATEDIFF() Funktion, außer dass DATEDIFF() Der Rückgabewert wird in Tagen ausgedrückt.

TIMEDIFF() akzeptiert zwei Argumente, die beide Zeit- oder Datumszeit-Ausdrücke sind. Dann wird das zweite Mal vom ersten subtrahiert.

Syntax

Die Syntax lautet wie folgt:

TIMEDIFF(expr1,expr2) 

Es gibt dann expr1 - expr2 zurück .

Beispiel

Hier ist ein Beispiel:

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

Ergebnis:

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

Hier noch einmal, aber mit vertauschten Zeitwerten:

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

Ergebnis:

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

Datum/Uhrzeit-Werte

Hier ist ein Beispiel, das datetime-Werte verwendet:

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

Ergebnis:

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

Mischwerttypen

Während TIMEDIFF() funktioniert sowohl mit Zeit- als auch mit Datumszeitwerten, beide Argumente müssen vom gleichen Typ sein. Das Mischen von Typen führt zu null .

Beispiel:

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

Ergebnis:

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

Außer Reichweite

Der Bereich für Zeitwerte ist '-838:59:59.999999' zu '838:59:59.999999' . Wenn das Ergebnis außerhalb dieses Bereichs liegt, ist der Rückgabewert die obere Grenze des relevanten Bereichs, und es wird eine Warnung zurückgegeben.

Beispiel:

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

Ergebnis:

+---------------------------------------------- ----------+| TIMEDIFF('2040-01-25 00:00:00', '2030-01-25 23:59:59') |+-------------------- ------------------------------------+| 838:59:59 |+-------------------------------------------------- -------------+1 Zeile im Satz, 1 Warnung (0,003 Sek.)

Schauen wir uns die Warnung an:

SHOW WARNINGS; 

Ergebnis:

+---------+------+------------------------------------- ------------------+| Ebene | Code | Nachricht |+---------+------+------------------------------ ------------------+| Warnung | 1292 | Abgeschnittener falscher Zeitwert:'87624:00:01' |+---------+------+------------------- ----------------------------+

Aktuelles Datum

Hier übergeben wir NOW() als zweites Argument:

SELECT 
    NOW(),
    TIMEDIFF('2021-05-27 10:00:00', NOW()); 

Ergebnis:

+---------------------+-------------------------------- ----------------+| JETZT() | TIMEDIFF('2021-05-27 10:00:00', JETZT()) |+---------------------+------- ---------------------------------+| 2021-05-27 14:29:38 | -04:29:38 |+---------------------+-------------------- --------------------+

Ungültige Argumente

Wenn ungültige Argumente übergeben werden, TIMEEDIFF() gibt null zurück :

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

Ergebnis:

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

Fehlendes Argument

Aufruf von TIMEDIFF() die falsche Anzahl von Argumenten oder das Fehlen von Argumenten führt zu einem Fehler:

SELECT TIMEDIFF(); 

Ergebnis:

FEHLER 1582 (42000):Falsche Parameteranzahl im Aufruf der nativen Funktion 'TIMEDIFF'

Und:

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

Ergebnis:

FEHLER 1582 (42000):Falsche Parameteranzahl im Aufruf der nativen Funktion 'TIMEDIFF'