INTERVAL
SQL-Konstrukt
Addiert ein Zeitintervall zu einem Datum oder zieht es davon ab.
MySQL 8.1
date {+ | -} INTERVAL expr unitParameter
- 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;Zahlungsfrist in 30 Tagen
MySQL 8.1
SELECT payment_id,
date,
date + INTERVAL 30 DAY AS due_date
FROM Payments
LIMIT 5;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;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'.