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 en los intervalos descritos en años y meses, o en meses, que 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 significativo y no puede convertirse 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 caracteres intervalo<calificador intervalo>
El formato de la serie de caracteres y del calificador de intervalo se define mediante la tabla que sigue.
Calificador de intervalo | Formato de serie de caracteres 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 esta instancia el valor del mes ha de estar entre [0 y 11]. Si un intervalo contiene un valor de mes y ningún valor de año, el valor del mes no es forzado.
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 tiene las siguientes limitaciones:
Ejemplos de valores de intervalos válidos:
Ejemplos de valores de intervalos no válidos:
Se ha especificado un campo de día, por lo que el campo de horas está limitado a [0,23].
Se ha especificado un campo de hora, por lo que los minutos están limitados a [0,59].
Ejemplos de literales de intervalos:
INTERVAL '1' HOUR INTERVAL '90' MINUTE INTERVAL '1-06' YEAR TO MONTH