In MySQL können Sie die Funktion DATE_SUB()
verwenden, um eine bestimmte Zeitspanne von einem Datum zu subtrahieren. Zum Beispiel können Sie damit 7 Tage von einem bestimmten Datum abziehen. Sie können angeben, ob Tage, Wochen, Monate, Quartale, Jahre usw. abgezogen werden sollen. Sie können auch einen Zeitwert wie Sekunden, Mikrosekunden usw. subtrahieren.
Diese Funktion ist ähnlich wie DATE_ADD()
, außer dass sie von einem Datum subtrahiert, anstatt es zu addieren.
Syntax
Die Syntax geht so:
DATE_SUB(date,INTERVAL expr unit)
Beispiel 1 – Grundlegende Verwendung
Hier ist ein Beispiel für die Verwendung.
SELECT DATE_SUB('2021-05-07', INTERVAL 5 DAY) AS Result;
Ergebnis:
+------------+| Result |+------------+| 2021-05-02 |+------------+
Dieses Beispiel subtrahiert 5 Tage von dem im ersten Argument angegebenen Datum.
Beispiel 2 – Andere Datumseinheiten
Sie können die Einheiten in Tagen, Wochen, Monaten, Jahren, usw. angeben. Hier sind einige Beispiele.
SELECT '2021-05-07' AS 'Start Date', DATE_SUB('2021-05-07', INTERVAL 2 WEEK) AS '-2 Weeks', DATE_SUB('2021-05-07', INTERVAL 2 MONTH) AS '-2 Months', DATE_SUB('2021-05-07', INTERVAL 2 QUARTER) AS '-2 Quarters', DATE_SUB('2021-05-07', INTERVAL 2 YEAR) AS '-2 Years';
Ergebnis:
+------------+------------+------------+-------------+------------+| Start Date | -2 Weeks | -2 Months | -2 Quarters | -2 Years |+------------+------------+------------+-------------+------------+| 2021-05-07 | 2021-04-23 | 2021-03-07 | 2020-11-07 | 2019-05-07 |+------------+------------+------------+-------------+------------+
Beispiel 3 – Zeiteinheiten
Sie können auch Zeiteinheiten von einem Datums-/Zeitwert subtrahieren. Hier ein Beispiel:
SELECT DATE_SUB('2021-05-07 10:00:00', INTERVAL 5 HOUR) AS Result;
Ergebnis:
+---------------------+| Result |+---------------------+| 2021-05-07 05:00:00 |+---------------------+
Sie können auch mehrere Einheiten gleichzeitig angeben. Zum Beispiel können Sie Stunden und Minuten angeben. So:
SELECT DATE_SUB('2021-05-07 10:00:00', INTERVAL '1:30' HOUR_MINUTE) AS Result;
Ergebnis:
+---------------------+| Result |+---------------------+| 2021-05-07 08:30:00 |+---------------------+
Erwartete Werte
Die folgende Tabelle zeigt die gültigen Einheitenwerte und ihr erwartetes Format.
unit Wert |
Erwartetes expr Format |
---|---|
MIKROSEKUNDE | MIKROSEKUNDEN |
SEKUNDE | SEKUNDEN |
MINUTE | MINUTEN |
STUNDE | STUNDEN |
TAG | TAGE |
WOCHE | WOCHEN |
MONAT | MONATE |
QUARTAL | VIERTEL |
JAHR | JAHRE |
SEKUNDE_MIKROSEKUNDE | ‚SEKUNDEN.MIKROSEKUNDEN‘ |
MINUTE_MIKROSEKUNDE | ‚MINUTEN:SEKUNDEN.MIKROSEKUNDEN‘ |
MINUTENSEKUNDE | ‚MINUTEN:SEKUNDEN‘ |
STUNDEN_MIKROSEKUNDE | ‚STUNDEN:MINUTEN:SEKUNDEN.MIKROSEKUNDEN‘ |
STUNDE_SEKUNDE | ‚STUNDEN:MINUTEN:SEKUNDEN‘ |
STUNDE_MINUTE | ‚STUNDEN:MINUTEN‘ |
TAG_MIKROSEKUNDE | ‚TAGE STUNDEN:MINUTEN:SEKUNDEN.MIKROSEKUNDEN‘ |
TAG_SEKUNDE | ‚TAGE STUNDEN:MINUTEN:SEKUNDEN‘ |
TAG_MINUTE | ‚TAGE STUNDEN:MINUTEN‘ |
TAG_STUNDE | ‚TAGE STUNDEN‘ |
JAHR_MONAT | ‚JAHRE.MONATE‘ |
Sie können auch die Funktion SUBDATE()
verwenden, um dasselbe zu tun (sie ist ein Synonym für die Funktion DATE_SUB()
, wenn Sie dieselbe Syntax verwenden).
Zusätzlich hat die Syntax von SUBDATE()
eine zweite Form, die eine Kurzschriftmethode ist, um eine bestimmte Anzahl von Tagen von einem Datum abzuziehen. Weitere Informationen finden Sie unter SUBDATE()-Beispiele in MySQL.