Der Datentyp INTERVAL gibt ein Zeitintervall an. Er verfügt über eine Reihe von Subtypen:
Alle diese Subtypen beschreiben Zeitintervalle, und alle können im gesamten Spektrum der Operationen des Typs INTERVAL eingesetzt werden, z. B. bei Additionen und Subtraktionen mit Werten des Typs DATE, TIME oder TIMESTAMP.
Verwenden Sie die Funktion CAST, um einen Subtyp in einen anderen zu konvertieren. Ausgenommen hiervon sind Intervalle in Jahren und Monaten oder in Monaten, die nicht in Intervalle in Tagen, Stunden, Minuten und Sekunden konvertiert werden können.
Die Trennung zwischen Monaten und Tagen entsteht dadurch, dass die Monate eine unterschiedliche Anzahl von Tagen haben. Ein Intervall von einem Monat und einem Tag ist nicht aussagekräftig und kann nicht sinnvoll in ein gleichbedeutendes Intervall, das eine Anzahl von Tagen angibt, konvertiert werden.
Ein Intervall-Literal wird mit folgender Syntax definiert:
INTERVAL <Intervall-Zeichenfolge> <Intervall-Qualifikationsmerkmal>
Das Format der Intervall-Zeichenfolge und das Intervall-Qualifikationsmerkmal werden in der folgenden Tabelle definiert.
Intervall-Qualifikationsmerkmal | Intervall-Zeichenfolgeformat | Beispiel |
---|---|---|
YEAR | '<Jahr>' oder '<Vorzeichen> <Jahr>' | '10' oder '-10' |
YEAR TO MONTH | '<Jahr>-<Monat>' oder '<Vorzeichen> <Jahr>-<Monat>' | '2-06' oder '- 2-06' |
MONTH | '<Monat>' oder '<Vorzeichen> <Monat>' | '18' oder '-18' |
DAY | '<Tag>' oder '<Vorzeichen> <Tag>' | '30' oder '-30' |
DAY TO HOUR | '<Tag> <Stunde>' oder '<Vorzeichen> <Tag> <Stunde>' | '1 02' oder '-1 02' |
DAY TO MINUTE | '<Tag> <Stunde>:<Minute>' oder '<Vorzeichen> <Tag> <Stunde>:<Minute>' | '1 02:30' oder '-1 02:30' |
DAY TO SECOND | '<Tag> <Stunde>:<Minute>:<Sekunde>' oder '<Vorzeichen> <Tag> <Stunde>:<Minute>:<Sekunde>' | '1 02:30:15' oder '-1 02:30:15.333' |
HOUR | '<Stunde>' oder '<Vorzeichen> <Stunde>' | '24' oder '-24' |
HOUR TO MINUTE | '<Stunde>:<Minute>' oder '<Vorzeichen> <Stunde>:<Minute>' | '1:30' oder '-1:30' |
HOUR TO SECOND | '<Stunde>:<Minute>:<Sekunde>' oder '<Vorzeichen> <Stunde>:<Minute>:<Sekunde>' | '1:29:59' oder '-1:29:59.333' |
MINUTE | '<Minute>' oder '<Vorzeichen> <Minute>' | '90' oder '-90' |
MINUTE TO SECOND | '<Minute>:<Sekunde>' oder '<Vorzeichen> <Minute>:<Sekunde>' | '89:59' oder '-89:59' |
SECOND | '<Sekunde>' oder '<Vorzeichen> <Sekunde>' | '15' oder '-15.7' |
Wenn ein Intervall sowohl eine Jahres- als auch eine Monatsangabe enthält, werden die beiden Werte durch einen Silbentrennungsstrich getrennt. In diesem Fall muss die Monatsangabe im Bereich [0, 11] liegen. Wenn ein Intervall eine Monatsangabe, aber keine Jahresangabe enthält, gilt für die Monatsangabe keine Einschränkung.
Tagesangaben werden durch ein Leerzeichen vom Rest des Intervalls getrennt.
Wenn ein Intervall mehr als eine HOUR-, MINUTE- oder SECOND-Angabe enthält, müssen die Werte durch einen Doppelpunkt getrennt werden und gelten für alle Werte mit Ausnahme des am weitesten links stehenden folgende Einschränkungen:
Der größte Wert für den Wert ganz links in einem Intervall ist +/- 2147483647.
Beispiele für gültige Werte:
Beispiele für ungültige Werte:
Da ein Wert für den Tag angegeben ist, muss der Wert für die Stundenangabe im Bereich [0,23] liegen.
Da ein Wert für die Stunde angegeben ist, muss der Wert für die Minutenangabe im Bereich [0,59] liegen.
Beispiele für Intervall-Literale:
INTERVAL '1' HOUR INTERVAL '90' MINUTE INTERVAL '1-06' YEAR TO MONTH