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