SQL Academy
Premium
Funktionsreferenz

INTERVAL

SQL-Konstrukt

Legt eine Zeitspanne fest, ein Intervall, das du zu Datumswerten addieren und von ihnen abziehen kannst.

PostgreSQL 17.5
INTERVAL 'quantity unit[ quantity unit ...]'

Parameter

quantitynumeric
Anzahl der Einheiten, kann gebrochen oder negativ sein
unitSchlüsselwort
Zeiteinheit, auch Pluralformen sind möglich (days, hours); mehrere Paare werden durch Leerzeichen getrennt
Werte:microsecondmillisecondsecondminutehourdayweekmonthyeardecadecenturymillennium

Rückgabewert

Wert vom Typ interval

Beispiele

Intervalle verschiedener Länge

PostgreSQL 17.5
SELECT INTERVAL '1 year 2 months 3 days' AS long_interval,
	INTERVAL '90 minutes' AS minutes;
long_intervalminutes
1 year 2 mons 3 days01:30:00

Datum der Volljährigkeit

PostgreSQL 17.5
SELECT member_name,
	birthday,
	birthday + INTERVAL '18 years' AS adult_since
FROM FamilyMembers;
member_namebirthdayadult_since
Headley Quincey1960-05-131978-05-13
Flavia Quincey1963-02-161981-02-16
Andie Quincey1983-06-052001-06-05
Lela Quincey1985-06-072003-06-07
Annie Quincey1988-04-102006-04-10
Ernest Forrest1961-09-111979-09-11
Constance Forrest1968-09-061986-09-06
Wednesday Addams2005-01-132023-01-13

Rechnen mit Datumswerten

PostgreSQL 17.5
SELECT DATE '2024-01-31' + INTERVAL '1 month' AS month_later,
	TIMESTAMP '2024-03-08 10:00' - TIMESTAMP '2024-03-01 08:30' AS difference,
	INTERVAL '1 day' * 3 AS three_days;
month_laterdifferencethree_days
2024-02-297 days 01:30:003 days

Zahlungen der letzten drei Monate

PostgreSQL 17.5
SELECT payment_id,
	date
FROM Payments
WHERE date >= TIMESTAMP '2006-03-12' - INTERVAL '3 months'
ORDER BY date;
payment_iddate
122005-12-22
212006-01-12
282006-01-15
222006-03-12

Details

Ein Intervall kannst du zu einem Datum addieren, davon abziehen und mit einer Zahl multiplizieren, und die Differenz zweier timestamp-Werte ist ebenfalls ein Intervall. Ein Datum plus ein Intervall ergibt ein timestamp, die Differenz zweier date-Werte dagegen eine ganze Zahl von Tagen.

Monate berücksichtigen die Monatslänge: DATE '2024-01-31' + INTERVAL '1 month' ergibt 2024-02-29. Stunden werden nicht automatisch in Tage umgerechnet: INTERVAL '36 hours' bleibt 36:00:00, und JUSTIFY_HOURS macht daraus 1 day 12:00:00.

Siehe auch

Wo du es lernst