In MariaDB SUBDATE()
ist eine integrierte Datums- und Zeitfunktion, die einen Betrag von einem bestimmten Datum subtrahiert.
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 zum Hinzufügen übergeben auf das Datum, anstatt davon abzuziehen.
SUBDATE()
hat auch eine Shortcut-Syntax, mit der Sie die zu subtrahierenden Tage angeben können.
Syntax
Das SUBDATE()
Funktion hat zwei Syntaxen.
Syntax 1:
SUBDATE(expr,days)
Wobei expr
ist das Datum und days
ist die Anzahl der zu subtrahierenden Tage.
Syntax 2:
SUBDATE(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.).
Bei Verwendung dieser Syntax SUBDATE()
ist ein Synonym für DATE_SUB()
.
Beispiel – Syntax 1
Hier ist ein Beispiel für die Verwendung der ersten Syntax:
SELECT SUBDATE('2021-05-01', 1);
Ergebnis:
+---------------------+| SUBDATE('2021-05-01', 1) |+---------------------+| 2021-04-30 |+---------------------+
Bei Bedarf können wir auch den Zeitanteil einbeziehen:
SELECT SUBDATE('2021-05-01 10:00:00', 1);
Ergebnis:
+-----------------------------------+| SUBDATE('2021-05-01 10:00:00', 1) |+------------------------------- ----+| 2021-04-30 10:00:00 |+-----------------------------------+Hier sind zwei alternative Möglichkeiten, dasselbe zu tun:
SELECT DATE_SUB('2021-05-01 10:00:00', INTERVAL 1 DAY) AS "Result 1", '2021-05-01 10:00:00' - INTERVAL 1 DAY AS "Result 2";
Ergebnis:
+---------------------+---------------------+| Ergebnis 1 | Ergebnis 2 |+---------------------+---------------------+| 2021-04-30 10:00:00 | 2021-04-30 10:00:00 |+---------------------+---------------- -----+Beispiel – Syntax 2
Hier ist ein Beispiel für die Verwendung der zweiten Syntax:
SELECT SUBDATE('2021-05-31 10:00:00', INTERVAL 1 HOUR);
Ergebnis:
+---------------------------------------------- ---+| SUBDATE('2021-05-31 10:00:00', INTERVALL 1 STUNDE) |+------------------------------------- --------------------+| 2021-05-31 09:00:00 |+--------------------------------------------------- -----------+
Diese Syntax ermöglicht es uns, andere Einheiten vom Datum abzuziehen (also nicht nur die Tage). Hier habe ich eine Stunde vom Datum abgezogen, aber ich hätte genauso gut Minuten, Sekunden, Monate, Tage, Jahre usw. abziehen können. Beispiele später.
Hier sind zwei alternative Methoden, um das gleiche Ergebnis wie im obigen Beispiel zu erzielen:
SELECT
DATE_SUB('2021-05-31 10:00:00', INTERVAL 1 HOUR) AS "Result 1",
'2021-05-31 10:00:00' - INTERVAL 1 HOUR AS "Result 2";
Ergebnis:
+---------------------+---------------------+| Ergebnis 1 | Ergebnis 2 |+---------------------+---------------------+| 2021-05-31 09:00:00 | 2021-05-31 09:00:00 |+---------------------+---------------- -----+
Negative Intervalle
Die Bereitstellung eines negativen Intervalls addiert das entspricht dem Datum.
Beispiel:
SELECT SUBDATE('2021-05-31 10:00:00', INTERVAL -1 HOUR);
Ergebnis:
Andere Einheiten
Hier ist ein Beispiel, das ein Intervall von 1 von den verschiedenen Datums- und Zeiteinheiten subtrahiert:
SELECT
SUBDATE('2021-05-01 10:00:00', INTERVAL 1 YEAR) AS YEAR,
SUBDATE('2021-05-01 10:00:00', INTERVAL 1 MONTH) AS MONTH,
SUBDATE('2021-05-01 10:00:00', INTERVAL 1 DAY) AS DAY,
SUBDATE('2021-05-01 10:00:00', INTERVAL 1 HOUR) AS HOUR,
SUBDATE('2021-05-01 10:00:00', INTERVAL 1 MINUTE) AS MINUTE,
SUBDATE('2021-05-01 10:00:00', INTERVAL 1 SECOND) AS SECOND,
SUBDATE('2021-05-01 10:00:00', INTERVAL 1 MICROSECOND) AS MICROSECOND;
Ergebnis (bei vertikaler Ausgabe):
JAHR:2020-05-01 10:00:00 MONAT:2021-04-01 10:00:00 TAG:2021-04-30 10:00:00 STUNDE:2021-05-01 09:00:00 MINUTE:2021-05-01 09:59:00 ZWEITE:2021-05-01 09:59:59 MIKROSEKUNDE:2021-05-01 09:59:59.999999
Zusammengesetzte Einheiten
Hier ist ein Beispiel, das zusammengesetzte Einheiten verwendet:
SELECT
SUBDATE('2021-05-01 10:00:00', INTERVAL '1:2' YEAR_MONTH) AS "YEAR_MONTH",
SUBDATE('2021-05-01 10:00:00', INTERVAL '1:25:35' HOUR_SECOND) AS "HOUR_SECOND",
SUBDATE('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 SUBDATE(null, INTERVAL 1 YEAR);
Ergebnis:
+-------------------------------+| SUBDATE(Null, INTERVALL 1 JAHR) |+---------------------------------------------+| NULL |+-------------------------------+
Fehlendes Argument
Aufruf von SUBDATE()
mit der falschen Anzahl von Argumenten oder ohne Übergabe von Argumenten führt zu einem Fehler:
SELECT SUBDATE();
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