El tipo de datos INTERVAL (intervalo) contiene un intervalo de tiempo. Tiene varios subtipos:
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 <serie intervalo> <calificador intervalo>
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 | Ejemplo |
---|---|---|
YEAR | '<año>' o '<signo> <año>' | '10' o '-10' |
YEAR TO MONTH | '<año>-<mes>' o '<signo> <año>-<mes>' | '2-06' o '- 2-06' |
MONTH | '<mes>' o '<signo> <mes>' | '18' o '-18' |
DAY | '<día>' o '<signo> <día>' | '30' o '-30' |
DAY TO HOUR | '<día> <hora>' o '<signo> <día> <hora>' | '1 02' o '-1 02' |
DAY TO MINUTE | '<día> <hora>:<minuto>' o '<signo> <día> <hora>:<minuto>' | '1 02:30' o '-1 02:30' |
DAY TO SECOND | '<día> <hora>:<minuto>:<segundo>' o '<signo> <día> <hora>:<minuto>:<segundo>' | '1 02:30:15' o '-1 02:30:15.333' |
HOUR | '<hora>' o '<signo> <hora>' | '24' o '-24' |
HOUR TO MINUTE | '<hora>:<minuto>' o '<signo> <hora>:<minuto>' | '1:30' o '-1:30' |
HOUR TO SECOND | '<hora>:<minuto>:<segundo>' o '<signo> <hora>:<minuto>:<segundo>' | '1:29:59' o '-1:29:59.333' |
MINUTE | '<minuto>' o '<signo> <minuto>' | '90' o '-90' |
MINUTE TO SECOND | '<minuto>:<segundo>' o '<signo> <minuto>:<segundo>' | '89:59' o '-89:59' |
SECOND | '<segundo>' o '<signo> <segundo>' | '15' o '-15.7' |
Cuando un intervalo contiene un valor de año y de mes, se utiliza un guión entre los dos valores. En ese caso, el valor del mes debe estar comprendido entre [0 y 11]. Si un intervalo contiene un valor de mes y ningún valor de año, el valor del mes no tiene restricciones.
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:
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:
Ejemplos de valores de intervalo no válidos:
Se ha especificado un campo de día, por lo que el campo de horas está restringido a [0,23].
Se ha especificado un campo de hora, por lo que los minutos están restringidos a [0,59].
Ejemplos de literales de intervalos:
INTERVAL '1' HOUR INTERVAL '90' MINUTE INTERVAL '1-06' YEAR TO MONTH