Tipo INTERVAL
Aplica-se a: Databricks SQL Databricks Runtime
Representa intervalos de tempo em uma escala de segundos ou meses.
Sintaxe
INTERVAL { yearMonthIntervalQualifier | dayTimeIntervalQualifier }
yearMonthIntervalQualifier
{ YEAR [TO MONTH] |
MONTH }
dayTimeIntervalQualifier
{ DAY [TO { HOUR | MINUTE | SECOND } ] |
HOUR [TO { MINUTE | SECOND } ] |
MINUTE [TO SECOND] |
SECOND }
Notas
Os intervalos que abrangem anos ou meses são chamados de intervalos ano-mês.
Os intervalos que abrangem dias, horas, minutos ou segundos são chamados de intervalos diurnos.
Não é possível combinar ou comparar intervalos ano-mês e dia-tempo.
Os intervalos diurnos são estritamente baseados em 86400s/dia e 60s/min.
Considera-se sempre que os segundos incluem microssegundos.
Limites
Um intervalo ano-mês tem um intervalo máximo de +/- 178,956,970
anos e 11
meses.
Um intervalo de tempo diurno tem um intervalo máximo de +/- 106,751,991
dias, 23
horas, 59
minutos e 59.999999
segundos.
Literais
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
: O número de anos decorridos.m
: O número de meses decorridos.d
: O número de dias decorridos.h
: O número de horas decorridas.m
: O número de minutos decorridos.s
: O número de segundos decorridos.ms
: O número decorrido de milissegundos.us
: O número decorrido de microssegundos.
A menos que uma unidade constitua a unidade principal da intervalQualifier
unidade, deve situar-se dentro do intervalo definido:
- Meses: entre 0 e 11
- Horário: entre 0 e 23
- Minutos: entre 0 e 59
- Segundos: entre 0,000000 e 59,999999
Você pode prefixar um sinal dentro ou fora intervalString
.
Se houver um -
sinal, o intervalo é negativo. Se houver dois ou nenhum -
sinal, o intervalo é positivo.
Se os componentes no intervalString
não corresponderem com os componentes no intervalQualifier
um erro é gerado.
Se o intervalString
valor não se encaixar no intervalo especificado pelo intervalQualifier
um erro é gerado.
Exemplos
> 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