INTERVALtype (Databricks SQL)

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

Sintaxis

INTERVAL intervalQualifier

intervalQualifier:
  YEAR  [ ( n ) ] [TO MONTH] |
  MONTH [ ( n ) ] |
  DAY [ ( n ) ] [TO { HOUR | MINUTE | SECOND [ ( 6 ) ] } ] |
  HOUR  [ ( n ) ] [TO { MINUTE | SECOND [ ( 6 ) ] } ] |
  MINUTE  [ ( n ) ] [TO SECOND [ ( 6 ) ] ] |
  SECOND [ ( 6 ) ]

n: el número máximo opcional de unidades de la unidad inicial. n debe ser mayor que 0 y menor o igual que:

  • 8 durante años
  • 9 durante meses
  • 8 durante días
  • 9 para horas
  • 11 para minutos

Si n no se especifica, el valor predeterminado es el máximo específico de la unidad.

Notas

Los intervalos que abarcan años o meses se denominan intervalos de mes de año. Los intervalos que abarcan días, horas, minutos o segundos se denominan intervalos de día y segundo. No se pueden combinar ni comparar intervalos de mes y día-segundo. Los intervalos de día y segundo se basan estrictamente en 86400 s/day y 60s/min. Siempre se considera que los segundos incluyen microsegundos.

Límites

Un intervalo de mes de año tiene un intervalo máximo de +/- 999,999,999 meses. Un intervalo de día y segundo tiene un intervalo máximo de +/- 999,999,999,999.999999 segundos.

Literales

INTERVAL [+|-] intervalString intervalQualifier

intervalString:
{ '[+|-] y[y …]' |
  '[+|-] y[y …]-[m]m' |
  '[+|-] d[d …]' |
  '[+|-] d[d …][T][h]h' |
  '[+|-] d[d …][T][h]h:[m]m' |
  '[+|-] d[d …][T][h]h:[m]m:[s]s' |
  '[+|-] d[d …][T][h]h:[m]m:[s]s.ms[ms][ms][us][us][us]' |
  '[+|-] h[h …]' |
  '[+|-] h[h …]:[m]m' |
  '[+|-] h[h …]:[m]m:[s]s' |
  '[+|-] h[h …]:[m]m:[s]s.ms[ms][ms][us][us][us]' |
  '[+|-] m[m …]' |
  '[+|-] m[m …]:[s]s' |
  '[+|-] m[m …]:[s]s.ms[ms][ms][us][us][us]' |
  '[+|-] s[s …]' |
  '[+|-] 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 constituye la unidad inicial de intervalQualifier debe estar dentro del intervalo definido:

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

Puede prefir un signo dentro o fuera intervalString de . Si hay un - signo, el intervalo es negativo. Si hay dos o ningún - signo, el intervalo es positivo. Si los componentes de intervalString no coinciden con los componentes del se genera un intervalQualifier error. Si el intervalString valor no cabe en el intervalo especificado por se genera un intervalQualifier error.

Ejemplos

> SELECT INTERVAL '100-00' YEAR TO MONTH;
  INTERVAL 100-100 YEAR TO MONTH

> SELECT INTERVAL '-3600' MONTH(4);
  INTERVAL -3600 MONTH(4)

> SELECT INTERVAL -'200:13:50.3' HOUR(6) TO SECOND(6)
  INTERVAL -200:13:50.3 HOUR(6) TO SECOND(6)

> SELECT CAST('11T23:4:0' AS INTERVAL DAY(3) TO SECOND)
  INTERVAL 11T23:04:00 DAY(3) TO SECOND(6)