Der Datentyp INTERVAL enthält ein Zeitintervall. Er hat folgende untergeordneten Typen:
Alle diese untergeordneten Typen beschreiben verschiedene Zeitintervalle und können an sämtlichen Operationen des Datentyps INTERVAL teilnehmen, beispielsweise an Additions- und Subtraktionsvorgängen mit den Werten DATE (Datum), TIME (Uhrzeit) oder TIMESTAMP (Zeitmarke).
Mit der CAST-Funktion konvertieren Sie die untergeordneten Typen. Ausgenommen sind dabei jedoch in Jahren und Monaten oder nur in Monaten beschriebene Intervalle, die nicht in Intervalle in Tagen, Stunden, Minuten und Sekunden konvertiert werden können.
Die Trennung zwischen Monaten und Tagen entsteht auf Grund der unterschiedlichen Anzahl von Tagen in den einzelnen Monaten. Ein Intervall von einem Monat und einem Tag ist nicht aussagekräftig und kann nicht sinnvoll in ein entsprechendes Intervall in Tagen konvertiert werden.
Ein Intervall-Literal wird von folgender Syntax definiert:
INTERVAL <Intervall-Zeichenfolge> <Intervall-Qualifikationsmerkmal>
Das Format der Intervall-Zeichenfolge und des Intervall-Qualifikationsmerkmals werden von nachfolgender Tabelle festgelegt.
Intervall-Qualifikationsmerkmal | Intervall-Zeichenfolgenformat | 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' |
Enthält ein Intervall ein Jahr und einen Monat, werden die Wert durch einen Silbentrennungsstrich getrennt. In diesem Fall muss der Monatswert im Bereich [0, 11] liegen. Wenn ein Intervall einen Monat und kein Jahr enthält, wird der Monatswert nicht eingeschränkt.
Tage werden mit einem Leerzeichen vom restlichen Intervall getrennt.
Wenn ein Intervall mehrere Werte zu HOUR, MINUTE und SECOND enthält, werden die Werte mit einem Doppelpunkt getrennt und mit Ausnahme des Wertes ganz links wie folgt eingeschränkt:
Der größte Wert für den Wert ganz
links in einem Intervall ist +/- 2147483647.
Beispiele gültiger Intervallwerte:
Beispiele ungültiger Intervallwerte:
Da ein Tag-Feld angegeben wurde, wird das Stunden-Feld auf [0,23] beschränkt.
Da ein Stunde-Feld angegeben wurde, werden die Minuten auf [0,59] beschränkt.
Beispiele zu Intervall-Literalen:
INTERVAL '1' HOUR INTERVAL '90' MINUTE INTERVAL '1-06' YEAR TO MONTH