Tipo deINTERVAL

Se aplica a:casilla marcada como Sí Databricks SQL casilla marcada como Sí Databricks Runtime

Representa intervalos de tiempo en una escala de segundos o meses.

Importante

Delta Lake no admite el tipo INTERVAL.

Sintaxis

INTERVAL { yearMonthIntervalQualifier | dayTimeIntervalQualifier }

yearMonthIntervalQualifier
 { YEAR [TO MONTH] |
   MONTH }

dayTimeIntervalQualifier
 { DAY [TO { HOUR | MINUTE | SECOND } ] |
   HOUR [TO { MINUTE | SECOND } ] |
   MINUTE [TO SECOND] |
   SECOND }

Notas

Los intervalos que abarcan años o meses se denominan intervalos de mes/año.

Los intervalos que abarcan días, horas, minutos o segundos se denominan intervalos de día y hora.

No se pueden combinar ni comparar los intervalos de mes y año y los de día y hora.

Los intervalos de día y hora se basan estrictamente en 86 400 s/día y 60 s/min.

Siempre se considera que los segundos incluyen microsegundos.

Límites

Un intervalo de mes/año tiene un rango máximo de +/- 178,956,970 años y 11 meses.

Un intervalo de día y hora tiene un rango máximo de +/- 106,751,991 días, 23 horas, 59 minutos y 59.999999 segundos.

Literales

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: número transcurrido de años.
  • m: número transcurrido de meses.
  • d: número transcurrido de días.
  • h: número transcurrido de horas.
  • m: número transcurrido de minutos.
  • s: número transcurrido de segundos.
  • ms: número transcurrido de milisegundos.
  • us: número transcurrido de microsegundos.

A menos que una unidad constituya la unidad principal de intervalQualifier, debe estar dentro del rango definido:

  • Meses: entre 0 y 11
  • Horas: entre 0 y 23
  • Minutos: entre 0 y 59
  • Segundos: entre 0,000000 y 59,999999

Puede añadir un signo como prefijo dentro o fuera de intervalString. Si hay un signo -, el intervalo es negativo. Si hay dos signos - (o ninguno), el intervalo es positivo. Si los componentes de intervalString no coinciden con los componentes de intervalQualifier, se genera un error. Si el valor de intervalString no se ajusta al rango especificado en intervalQualifier, se genera un error.

Ejemplos

> 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