SQL Academy
Premium
Funktionsreferenz

SUBDATE

Zieht ein Zeitintervall oder eine Anzahl von Tagen von einem Datum ab.

MySQL 8.4
SUBDATE(date, INTERVAL expr unit | days)
  • a | beine der Optionen
date
Ausgangsdatum oder Datum mit Uhrzeit
DATE
INTERVAL expr unit
Abzuziehendes Intervall, zum Beispiel INTERVAL 10 DAY
expr
Wie viele Einheiten abgezogen werden
unit
Einheit des Intervalls
Schlüsselwort
MICROSECONDSECONDMINUTEHOURDAYWEEKMONTHQUARTERYEARSECOND_MICROSECONDMINUTE_MICROSECONDMINUTE_SECONDHOUR_MICROSECONDHOUR_SECONDHOUR_MINUTEDAY_MICROSECONDDAY_SECONDDAY_MINUTEDAY_HOURYEAR_MONTH
days
Anzahl der Tage als Kurzform statt INTERVAL
INT

Rückgabewert

Datum, wenn von einem Datum Tage oder größere Einheiten abgezogen werden, sonst Datum mit Uhrzeit; gibt es den Tag im Monat nicht, wird der letzte Tag des Monats verwendet

Beispiele

Zehn Tage vor einem Datum

MySQL 8.4
SELECT SUBDATE('2022-06-16', INTERVAL 10 DAY) AS new_date;
new_date
2022-06-06

Kurzform mit Tagen

MySQL 8.4
SELECT SUBDATE('2022-06-16', 10) AS new_date;
new_date
2022-06-06

Zusammengesetzte Intervalleinheit

MySQL 8.4
SELECT SUBDATE('2022-06-16', INTERVAL '1 12' DAY_HOUR) AS new_date;
new_date
2022-06-14 12:00:00

Details

Statt der Funktion kannst du ein Intervall auch mit einem Operator addieren oder subtrahieren: date + INTERVAL 7 DAY. In PostgreSQL gibt es diese Funktion nicht: Ein Datum wird dort mit demselben Operator verschoben, aber das Intervall wird als String geschrieben: date + INTERVAL '7 days'.

Zusammengesetzte EinheitFormat des Strings exprBeispiel
SECOND_MICROSECONDSekunden.Mikrosekunden'10.000500'
MINUTE_MICROSECONDMinuten:Sekunden.Mikrosekunden'5:10.000500'
MINUTE_SECONDMinuten:Sekunden'5:10'
HOUR_MICROSECONDStunden:Minuten:Sekunden.Mikrosekunden'2:05:10.000500'
HOUR_SECONDStunden:Minuten:Sekunden'2:05:10'
HOUR_MINUTEStunden:Minuten'1:30'
DAY_MICROSECONDTage Stunden:Minuten:Sekunden.Mikrosekunden'1 2:05:10.000500'
DAY_SECONDTage Stunden:Minuten:Sekunden'1 2:05:10'
DAY_MINUTETage Stunden:Minuten'1 2:05'
DAY_HOURTage Stunden'1 12'
YEAR_MONTHJahre-Monate'1-6'

Siehe auch