SQL Academy
Premium
Funktionsreferenz

DATE_SUB

Zieht ein Zeitintervall von einem Datum ab.

MySQL 8.1
DATE_SUB(date, INTERVAL expr unit)
date
Ausgangsdatum oder Datum mit Uhrzeit
DATE
INTERVAL expr unit
Abzuziehendes Intervall, zum Beispiel INTERVAL 1 MONTH
expr
Wie viele Einheiten abgezogen werden
unit
Einheit des Intervalls
Schlüsselwort
MICROSECONDSECONDMINUTEHOURDAYWEEKMONTHQUARTERYEARSECOND_MICROSECONDMINUTE_MICROSECONDMINUTE_SECONDHOUR_MICROSECONDHOUR_SECONDHOUR_MINUTEDAY_MICROSECONDDAY_SECONDDAY_MINUTEDAY_HOURYEAR_MONTH

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 dem Geburtstag

MySQL 8.1
SELECT member_name,
	birthday,
	DATE_SUB(birthday, INTERVAL 10 DAY) AS reminder_date
FROM FamilyMembers;
member_namebirthdayreminder_date
Headley Quincey1960-05-131960-05-03
Flavia Quincey1963-02-161963-02-06
Andie Quincey1983-06-051983-05-26
Lela Quincey1985-06-071985-05-28
Annie Quincey1988-04-101988-03-31
Ernest Forrest1961-09-111961-09-01
Constance Forrest1968-09-061968-08-27
Wednesday Addams2005-01-132005-01-03

Ein Monat vor dem 31. März

MySQL 8.1
SELECT DATE_SUB('2024-03-31', INTERVAL 1 MONTH) AS new_date;
new_date
2024-02-29

Zusammengesetzte Intervalleinheit

MySQL 8.1
SELECT DATE_SUB('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