Tipo de datos INTERVAL (intervalo) ESQL

ElINTERVALEl tipo de datos contiene un intervalo de tiempo.

Este tipo de datos tiene varios subtipos:

  • YEAR
  • YEAR TO MONTH
  • MONTH
  • DAY
  • DAY TO HOUR
  • DAY TO MINUTE
  • DAY TO SECOND
  • HOUR
  • HOUR TO MINUTE
  • HOUR TO SECOND
  • MINUTE
  • MINUTE TO SECOND
  • SECOND

Todos estos subtipos describen intervalos de tiempo y todos pueden formar parte del rango completo de operaciones del tipo INTERVAL; por ejemplo, operaciones de suma y resta con valores de tipo DATE, TIME o TIMESTAMP.

Use la función CAST para convertir un subtipo en otro, excepto para los intervalos descritos en años y meses, o en meses, que no pueden convertirse en los descritos en días, horas, minutos y segundos.

La división entre meses y días se produce porque el número de días de cada mes varía. Un intervalo de un mes y un día no es significativo y no puede convertirse acertadamente en un intervalo equivalente formado únicamente por días.

Un literal de intervalo se define mediante la sintaxis:

INTERVAL <interval string> <interval qualifier>

El formato de la serie de intervalo y del calificador de intervalo se definen en la tabla que sigue.

Calificador de intervalo Formato de serie de intervalo Ejemplos
YEAR [Signo]'[Signo]Año' INTERVAL '10' YEAR(próximos 10 años)

INTERVAL '-10' YEAR(10 años anteriores)

INTERVAL -'10' YEAR(10 años anteriores)

INTERVAL -'-10' YEAR(10 años siguientes; dos negativos dan positivo)

YEAR TO MONTH [Signo]'[Signo]Año-mes' INTERVAL '2-06' YEAR TO MONTH
MONTH [Signo]'[Signo]mes' INTERVAL '18' MONTH
DAY [Signo]'[Signo]día' INTERVAL '30' DAY
DAY TO HOUR [Signo]'[Signo]día hora' INTERVAL '1 02' DAY TO HOUR
DAY TO MINUTE [Signo]'[Signo]día hora:minuto' INTERVAL '1 02:30' DAY TO MINUTE
DAY TO SECOND [Signo]'[Signo]día hora:minuto:Segundo' INTERVAL '1 02:30:15' DAY TO SECOND
HOUR [Signo]'[Signo]hora' INTERVAL '24' HOUR
HOUR TO MINUTE [Signo]'[Signo]hora:minuto' INTERVAL '1:30' HOUR TO MINUTE
HOUR TO SECOND [Signo]'[Signo]hora:minuto:Segundo' INTERVAL '1:29:59' HOUR TO SECOND
MINUTE [Signo]'[Signo]minuto' INTERVAL '90' MINUTE
MINUTE TO SECOND [Signo]'[Signo]minuto:Segundo' INTERVAL '89:59' MINUTE TO SECOND
SECOND [Signo]'[Signo]Segundo' INTERVAL '15' SECOND

Cuando un intervalo contiene un valor de año y de mes, se utiliza un guión entre los dos valores. En esta instancia, el valor de mes debe estar dentro del rango[0,11]. Si un intervalo contiene un valor de mes y ningún valor de año, el valor de mes no está restringido.

Se utiliza un espacio para separar los días del resto del intervalo.

Si un intervalo contiene más de valor de HOUR, MINUTE o SECOND, es necesario utilizar dos puntos para separar los valores y todos excepto el del extremo izquierdo tienen las siguientes restricciones:

HOUR
0-23
MINUTE
0-59
SECOND
0-59,999...

El valor más grande del valor situado más a la izquierda en un intervalo es +/- 2147483647.

Ejemplos de valores de intervalo válidos:

  • 72 horas
  • 3 días: 23 horas
  • 3600 segundos
  • 90 minutos: 5 segundos

Ejemplos de valores de intervalo no válidos:

  • 3 días: 36 horas

    Se especifica un campo de día, por lo que el campo de horas está restringido a[0,23].

  • 1 hora: 90 minutos

    Se ha especificado un campo de hora, por lo que los minutos están restringidos a[0,59].

El código siguiente es un ejemplo de cómo definir los literales INTERVAL en su código:

DECLARE i1,i2,i3,i4,i5 INTERVAL;
SET i1 = INTERVAL '10' YEAR;     
SET i2 = INTERVAL '-10' YEAR;    
SET i3 = INTERVAL -'10' YEAR;    
SET i4 = INTERVAL -'-10' YEAR;  
SET i5 = INTERVAL '-2-06' YEAR TO MONTH;