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;Datum der Volljährigkeit
PostgreSQL 17.5
SELECT member_name,
birthday,
birthday + INTERVAL '18 years' AS adult_since
FROM FamilyMembers;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;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;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.