Tipo de datos INTERVAL (intervalo) ESQL
ElINTERVAL
El 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)
|
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;