Il tipo di dati INTERVAL rappresenta un intervallo di tempo. Esso ha alcuni tipi secondari:
Tutti questi tipi secondari descrivono intervalli di tempo e tutti possono partecipare all'intera gamma di operazioni del tipo INTERVAL; ad esempio, operazioni di addizione e sottrazione con i valori di tipo DATE, TIME o TIMESTAMP.
Utilizzare la funzione CAST per eseguire la conversione da un tipo secondario ad un altro, tranne che per gli intervalli descritti in anni e mesi o mesi, che non possono essere convertiti in quelli descritti in giorni, ore, minuti e secondi.
La suddivisione tra mesi e giorni è dovuta al fatto che il numero di giorni in ogni mese è variabile. Un intervallo di un mese e un giorno non è significativo e non può essere convertito opportunamente in un intervallo equivalente composto solo dal numero di giorni.
Un intervallo letterale è definito dalla sintassi:
INTERVAL <stringa intervallo> <qualificatore intervallo>
Il formato della stringa dell'intervallo e il qualificatore dell'intervallo sono definiti dalla seguente tabella.
Qualificatore intervallo | Formato stringa intervallo | Esempio |
---|---|---|
YEAR | '<anno>' o '<simbolo> <anno>' | '10' o '-10' |
YEAR TO MONTH | '<anno>-<mese>' o '<simbolo> <anno>-<mese>' | '2-06' o '- 2-06' |
MONTH | '<mese>' o '<simbolo> <mese>' | '18' o '-18' |
DAY | '<giorno>' o '<simbolo> <giorno>' | '30' o '-30' |
DAY TO HOUR | '<giorno> <ora>' o '<simbolo> <giorno> <ora>' | '1 02' o '-1 02' |
DAY TO MINUTE | '<giorno> <ora>:<minuti>' o '<simbolo> <giorno> <ora>:<minuti>' | '1 02:30' o '-1 02:30' |
DAY TO SECOND | '<giorno> <ora>:<minuti>:<secondi>' o '<simbolo> <giorno> <ora>:<minuti>:<secondi>' | '1 02:30:15' o '-1 02:30:15.333' |
HOUR | '<ora>' o '<simbolo> <ora>' | '24' o '-24' |
HOUR TO MINUTE | '<ora>:<minuti>' o '<simbolo> <ora>:<minuti>' | '1:30' o '-1:30' |
HOUR TO SECOND | '<ora>:<minuti>:<secondi>' o '<simbolo> <ora>:<minuti>:<secondi>' | '1:29:59' o '-1:29:59.333' |
MINUTE | '<minuti>' o '<simbolo> <minuti>' | '90' o '-90' |
MINUTE TO SECOND | '<minuti>:<secondi>' o '<simbolo> <minuti>:<secondi>' | '89:59' o '-89:59' |
SECOND | '<secondi>' o '<simbolo> <secondi>' | '15' o '-15.7' |
Laddove un intervallo contenga sia un valore per l'anno che per il mese, viene utilizzato un trattino tra i due valori. In questa istanza, il valore mese deve essere compreso nell'intervallo [0, 11]. Se un intervallo contiene un valore mese e nessun valore anno, il valore mese non è vincolato.
Per separare i giorni dal resto dell'intervallo viene utilizzato uno spazio.
Se un intervallo contiene più di un valore HOUR, MINUTE e SECOND, sono necessari i due punti per separare i valori e tutti i valori tranne quello all'estrema sinistra sono vincolati come segue:
Il valore più ampio del valore più a sinistra in un intervallo è +/- 2147483647.
Alcuni esempi di valori intervallo validi sono:
Alcuni esempi di valori intervallo non validi sono:
E' specificato un campo giorni, quindi il campo ore è vincolato a [0,23].
E' specificato un campo ore, quindi i minuti sono vincolati a [0,59].
Seguono alcuni esempi di intervalli letterali:
INTERVAL '1' HOUR INTERVAL '90' MINUTE INTERVAL '1-06' YEAR TO MONTH