In MariaDB TIMESTAMPDIFF()
ist eine integrierte Datums- und Zeitfunktion, die die Differenz zwischen zwei Datums- oder Datumszeitausdrücken zurückgibt.
Syntax
Die Syntax lautet wie folgt:
TIMESTAMPDIFF(unit,datetime_expr1,datetime_expr2)
Wobei unit
ist einer der folgenden Werte:
MICROSECOND
SECOND
MINUTE
HOUR
DAY
WEEK
MONTH
QUARTER
YEAR
Die Einheiten können optional das Präfix SQL_TSI_
haben .
TIMESTAMPDIFF()
gibt datetime_expr2
zurück – datetime_expr1
.
Ein Ausdruck kann ein Datum und der andere eine Datumszeit sein. Datumswerte werden so behandelt, als hätten sie einen Zeitteil von 00:00:00
wo nötig.
Beispiel
Hier ist ein Beispiel zur Veranschaulichung:
SELECT TIMESTAMPDIFF(DAY, '2030-02-01', '2030-03-01');
Ergebnis:
Negatives Ergebnis
Das Vertauschen der Daten führt zu einem negativen Ergebnis:
SELECT TIMESTAMPDIFF(DAY, '2030-03-01', '2030-02-01');
Ergebnis:
Datum/Uhrzeit-Werte
Hier ist ein Beispiel für die Übergabe eines datetime-Werts:
SELECT TIMESTAMPDIFF(
HOUR,
'2030-02-01 00:00:00',
'2030-02-01 12:30:45'
)
AS Result;
Ergebnis:
+--------+| Ergebnis |+--------+| 12 |+--------+
Ich habe HOUR
angegeben , und ignoriert daher den Minuten- und Sekundenteil.
Mischtypen
Hier ist ein Beispiel für die Übergabe eines Datums- und eines Datetime-Werts:
SELECT TIMESTAMPDIFF(
HOUR,
'2030-02-01',
'2030-02-01 12:30:45'
)
AS Result;
Ergebnis:
+--------+| Ergebnis |+--------+| 12 |+--------+
Wie bereits erwähnt, werden Datumswerte so behandelt, als hätten sie einen Zeitteil von 00:00:00
.
Hinzufügen eines SQL_TSI_
Präfix
Die Einheit kann einen SQL_TSI_
enthalten Präfix falls erforderlich:
SELECT TIMESTAMPDIFF(
SQL_TSI_YEAR,
'2030-02-01',
'2035-02-01'
)
AS Result;
Ergebnis:
+--------+| Ergebnis |+--------+| 5 |+--------+
Mikrosekunden
Hier ist ein Beispiel, das Mikrosekunden zurückgibt:
SELECT TIMESTAMPDIFF(
MICROSECOND,
'2030-02-01 10:30:45.000000',
'2030-02-01 10:30:45.123456'
)
AS Result;
Ergebnis:
+--------+| Ergebnis |+--------+| 123456 |+--------+
Hier ist eine, bei der Mikrosekunden nicht wirklich in den datetime-Werten angegeben sind:
SELECT TIMESTAMPDIFF(
MICROSECOND,
'2030-02-01 10:30:45',
'2030-02-01 12:30:45'
)
AS Result;
Ergebnis:
+------------+| Ergebnis |+------------+| 7200000000 |+------------+
Aktuelles Datum
Wir können NOW()
übergeben eines der datetime-Argumente, um das aktuelle Datum und die aktuelle Uhrzeit mit einem anderen Datum zu vergleichen:
SELECT
NOW(),
TIMESTAMPDIFF(DAY, NOW(), '2021-03-31') AS Diff;
Ergebnis:
+---------------------+------+| JETZT() | Unterschied |+---------------------+------+| 2021-05-30 09:29:01 | -60 |+---------------------+------+
Nulldaten
Wenn eines der Daten null
ist , ist das Ergebnis null
:
SELECT TIMESTAMPDIFF(
YEAR,
'2030-02-01',
NULL
)
AS Result;
Ergebnis:
+--------+| Ergebnis |+--------+| NULL |+--------+
Fehlendes Argument
Aufruf von TIMESTAMPDIFF()
mit der falschen Anzahl von Argumenten oder ohne Übergabe von Argumenten führt zu einem Fehler:
SELECT TIMESTAMPDIFF();
Ergebnis:
ERROR 1064 (42000):Sie haben einen Fehler in Ihrer SQL-Syntax; Überprüfen Sie das Handbuch, das Ihrer MariaDB-Serverversion entspricht, auf die richtige Syntax, um sie in der Nähe von ')' in Zeile 1 zu verwenden
Und noch ein Beispiel:
SELECT TIMESTAMPDIFF('2020-12-09');
Ergebnis:
ERROR 1064 (42000):Sie haben einen Fehler in Ihrer SQL-Syntax; Überprüfen Sie das Handbuch, das Ihrer MariaDB-Serverversion entspricht, auf die richtige Syntax, die in der Nähe von '10, '2020-12-09')' in Zeile 1 zu verwenden ist