Share via


Tipo INTERVAL

Aplica-se a:Marque Sim Databricks SQL Marque Sim Databricks Runtime

Representa intervalos de tempo em uma escala de segundos ou meses.

Importante

Delta Lake não suporta o INTERVAL tipo.

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