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:
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:
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'