SQL Academy
Premium
Funktionsreferenz

INTERVAL

SQL-Konstrukt

Addiert ein Zeitintervall zu einem Datum oder zieht es davon ab.

MySQL 8.1
date {+ | -} INTERVAL expr unit

Parameter

dateDATE
Ausgangsdatum oder Datum mit Uhrzeit
exprINT
Anzahl der Einheiten; bei einer zusammengesetzten Einheit ein String, zum Beispiel '1:30'
unitSchlüsselwort
Einheit des Intervalls
Werte:MICROSECONDSECONDMINUTEHOURDAYWEEKMONTHQUARTERYEARSECOND_MICROSECONDMINUTE_MICROSECONDMINUTE_SECONDHOUR_MICROSECONDHOUR_SECONDHOUR_MINUTEDAY_MICROSECONDDAY_SECONDDAY_MINUTEDAY_HOURYEAR_MONTH

Rückgabewert

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

Beispiele

Ein Monat zum 31. Januar

MySQL 8.1
SELECT '2024-01-31' + INTERVAL 1 MONTH AS next_month;
next_month
2024-02-29

Zahlungsfrist in 30 Tagen

MySQL 8.1
SELECT payment_id,
	date,
	date + INTERVAL 30 DAY AS due_date
FROM Payments
LIMIT 5;
payment_iddatedue_date
12005-02-122005-03-14
22005-03-232005-04-22
32005-05-142005-06-13
42005-07-222005-08-21
52005-07-262005-08-25

Intervall links und Minus

MySQL 8.1
SELECT INTERVAL 1 DAY + '2024-12-31' AS new_year,
	'2024-03-08 14:30:00' - INTERVAL '1:30' HOUR_MINUTE AS earlier;
new_yearearlier
2025-01-012024-03-08 13:00:00

Details

INTERVAL ist Teil eines Ausdrucks mit einem Datum, kein eigener Wert: SELECT INTERVAL 1 DAY ist ein Fehler. date + INTERVAL 7 DAY ist gleichwertig mit DATE_ADD(date, INTERVAL 7 DAY), und das Intervall kann auch links vom Plus stehen. Ein Datum von einem Intervall abziehen kannst du nicht.

Ohne Intervall wird eine Zahl nicht zum Datum, sondern zur Zahl JJJJMMTT addiert: CURDATE() + 1 ist nicht morgen. In PostgreSQL ist INTERVAL ein Datentyp, und der Wert 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

Wo du es lernst