In MariaDB, DATE_SUB()
ist eine integrierte Datums- und Uhrzeitfunktion, mit der Sie einen Betrag von einem Datum abziehen können.
Sie können ein Datum ändern, indem Sie das Datum, die zu subtrahierende Einheit und den zu subtrahierenden Betrag angeben. Sie können einen negativen Betrag übergeben, um das Datum zu addieren, anstatt es zu subtrahieren.
Syntax
Die Syntax sieht so aus:
DATE_SUB(date,INTERVAL expr unit)
Wobei date
ist das zu ändernde Datum, expr
ist der zu subtrahierende Betrag und unit
ist die zu subtrahierende Datums-/Zeiteinheit (z. B. Sekunde, Minute usw.).
Beispiel
Hier ist ein einfaches Beispiel:
SELECT DATE_SUB('2021-05-31 10:00:00', INTERVAL 1 HOUR);
Ergebnis:
Das ist wie das Folgende:
SELECT '2021-05-31 10:00:00' - INTERVAL 1 HOUR;
Ergebnis:
+------------------------------------+| '2021-05-31 10:00:00' - INTERVALL 1 STUNDE |+--------------------------------------------- ---------+| 2021-05-31 09:00:00 |+--------------------------------------------------- ---+
Negative Intervalle
Die Bereitstellung eines negativen Intervalls addiert dieser Betrag ab dem Datum.
Beispiel:
SELECT DATE_SUB('2021-05-31 10:00:00', INTERVAL -1 HOUR);
Ergebnis:
Andere Einheiten
Hier ist ein Beispiel, das den verschiedenen Datums- und Zeiteinheiten ein Intervall von 1 hinzufügt:
SELECT
DATE_SUB('2021-05-10 10:00:00', INTERVAL 1 YEAR) AS YEAR,
DATE_SUB('2021-05-10 10:00:00', INTERVAL 1 MONTH) AS MONTH,
DATE_SUB('2021-05-10 10:00:00', INTERVAL 1 DAY) AS DAY,
DATE_SUB('2021-05-10 10:00:00', INTERVAL 1 HOUR) AS HOUR,
DATE_SUB('2021-05-10 10:00:00', INTERVAL 1 MINUTE) AS MINUTE,
DATE_SUB('2021-05-10 10:00:00', INTERVAL 1 SECOND) AS SECOND,
DATE_SUB('2021-05-10 10:00:00', INTERVAL 1 MICROSECOND) AS MICROSECOND;
Ergebnis (bei vertikaler Ausgabe):
JAHR:2020-05-10 10:00:00 MONAT:2021-04-10 10:00:00 TAG:2021-05-09 10:00:00 STUNDE:2021-05-10 09:00:00 MINUTE:2021-05-10 09:59:00 ZWEITE:2021-05-10 09:59:59 MIKROSEKUNDE:2021-05-10 09:59:59.999999
Zusammengesetzte Einheiten
Hier ist ein Beispiel, das zusammengesetzte Einheiten verwendet:
SELECT
DATE_SUB('2021-05-01 10:00:00', INTERVAL '1:2' YEAR_MONTH) AS "YEAR_MONTH",
DATE_SUB('2021-05-01 10:00:00', INTERVAL '1:25:35' HOUR_SECOND) AS "HOUR_SECOND",
DATE_SUB('2021-05-01 10:00:00', INTERVAL '1:30' DAY_MINUTE) AS "DAY_MINUTE";
Ergebnis:
+---------------------+---------------------+-- -------------------+| JAHR_MONAT | HOUR_SECOND | DAY_MINUTE |+---------------------+---------------------+--- ------------------+| 01.03.2020 10:00:00 | 01.05.2021 08:34:25 | 2021-05-01 08:30:00 |+---------------------+---------------- -----+---------------------+
Nulldaten
Übergabe von null
für das Datum gibt null
zurück :
SELECT DATE_SUB(null, INTERVAL 1 YEAR);
Ergebnis:
+---------------------------------+| DATE_SUB(Null, INTERVALL 1 JAHR) |+----------------------------------------------+| NULL |+---------------------------------------------+
Fehlendes Argument
Aufruf von DATE_SUB()
mit der falschen Anzahl von Argumenten oder ohne Übergabe von Argumenten führt zu einem Fehler:
SELECT DATE_SUB();
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