Tipo diINTERVAL
Si applica a: Databricks SQL Databricks Runtime
Rappresenta gli intervalli di tempo su una scala di secondi o mesi.
Sintassi
INTERVAL { yearMonthIntervalQualifier | dayTimeIntervalQualifier }
yearMonthIntervalQualifier
{ YEAR [TO MONTH] |
MONTH }
dayTimeIntervalQualifier
{ DAY [TO { HOUR | MINUTE | SECOND } ] |
HOUR [TO { MINUTE | SECOND } ] |
MINUTE [TO SECOND] |
SECOND }
Note
Gli intervalli che coprono anni o mesi sono denominati intervalli di mesi di anno.
Gli intervalli che coprono giorni, ore, minuti o secondi sono denominati intervalli di tempo di giorno.
Non è possibile combinare o confrontare intervalli di anno e mese e giorno.
Gli intervalli di giorno sono rigorosamente basati su 86400s/giorno e 60s/min.
I secondi vengono sempre considerati come microsecondi.
Limiti
Un intervallo di mesi di anno ha un intervallo massimo di +/- 178,956,970
anni e 11
mesi.
Un intervallo di tempo di giorno ha un intervallo massimo di +/- 106,751,991
giorni, 23
ore, 59
minuti e 59.999999
secondi.
Valori letterali
year-month interval
INTERVAL [+|-] yearMonthIntervalString yearMonthIntervalQualifier
day-time interval
INTERVAL [+|-] dayTimeIntervalString dayTimeIntervalQualifier
yearMonthIntervalString
{ '[+|-] y[...]' |
'[+|-] y[...]-[m]m' }
dayTimeIntervalString
{ '[+|-] d[...]' |
'[+|-] d[...] [h]h' |
'[+|-] d[...] [h]h:[m]m' |
'[+|-] d[...] [h]h:[m]m:[s]s' |
'[+|-] d[...] [h]h:[m]m:[s]s.ms[ms][ms][us][us][us]' |
'[+|-] h[...]' |
'[+|-] h[...]:[m]m' |
'[+|-] h[...]:[m]m:[s]s' |
'[+|-] h[...]:[m]m:[s]s.ms[ms][ms][us][us][us]' |
'[+|-] m[...]' |
'[+|-] m[...]:[s]s' |
'[+|-] m[...]:[s]s.ms[ms][ms][us][us][us]' |
'[+|-] s[...]' |
'[+|-] s[...].ms[ms][ms][us][us][us]' }
y
: numero di anni trascorso.m
: numero di mesi trascorso.d
: numero di giorni trascorso.h
: numero di ore trascorso.m
: numero di minuti trascorso.s
: numero trascorso di secondi.ms
: numero trascorso di millisecondi.us
: numero trascorso di microsecondi.
A meno che un'unità non rappresenti l'unità iniziale dell'oggetto intervalQualifier
deve rientrare nell'intervallo definito:
- Mesi: compreso tra 0 e 11
- Ore: compreso tra 0 e 23
- Minuti: compreso tra 0 e 59
- Secondi: compreso tra 0,000000 e 59,99999999
È possibile anteporre un segno all'interno o all'esterno intervalString
di .
Se è presente un -
segno, l'intervallo è negativo. Se sono presenti due o nessun -
segno, l'intervallo è positivo.
Se i componenti in intervalString
non corrispondono ai componenti in intervalQualifier
viene generato un errore.
Se il intervalString
valore non rientra nell'intervallo specificato dall'errore intervalQualifier
viene generato.
Esempi
> SELECT INTERVAL '100-00' YEAR TO MONTH;
100-0
> SELECT INTERVAL '-3600' MONTH;
-300-0
> SELECT INTERVAL -'200:13:50.3' HOUR TO SECOND;
-200:13:50.3
> SELECT typeof(INTERVAL -'200:13:50.3' HOUR TO SECOND);
interval hour to second
> SELECT CAST('11 23:4:0' AS INTERVAL DAY TO SECOND);
11 23:04:00