Utilizar operadores numéricos con valores de fecha y hora

Los ejemplos siguientes muestran el ESQL que puede codificar para manipular los valores de fecha y hora con operadores numéricos.

Acerca de esta tarea

Suma de un intervalo a un valor de fecha y hora
La operación más sencilla que puede realizar es sumar o restar un intervalo de un valor de fecha y hora. Por ejemplo, puede escribir las expresiones siguientes:
DATE '2000-03-29' + INTERVAL '1' MONTH
TIMESTAMP '1999-12-31 23:59:59' + INTERVAL '1' SECOND

El siguiente ejemplo muestra cómo calcular una fecha de jubilación añadiendo la edad de la jubilación a la fecha de nacimiento:

DECLARE retAge CHARACTER '65';
DECLARE birthDate DATE DATE '1953-06-01';

SET OutputRoot.XML.Test.retirementDate = birthDate + CAST(retAge AS INTERVAL YEAR);

La resolicitud de la palabra DATE en el ejemplo anterior es intencional. La primera aparición de DATE especifica el tipo de datos de la variable declarada birthDate (fecha de nacimiento). En la segunda aparición se inicializa la misma variable con la Serie de constante encerrada entre comillas simples como fecha (DATE).

Suma o resta de dos intervalos
Puede combinar dos valores de intervalo utilizando la adición o sustracción. Los dos valores de intervalo deben ser de tipos compatibles. No es válido sumar un intervalo de año-mes a un intervalo de día-segundo tal como se muestra en el ejemplo siguiente:
INTERVAL '1-06' YEAR TO MONTH + INTERVAL '20' DAY

El calificador de intervalo del intervalo resultante es suficiente para que abarque todos los campos que actualmente están en los dos intervalos del operando. Por ejemplo:

INTERVAL '2 01' DAY TO HOUR + INTERVAL '123:59' MINUTE TO SECOND

da como resultado un intervalo con un calificador de DAY TO SECOND, debido a que tanto los campos de día y segundo están presentes en al menos uno de los valores de operando.

Resta de dos valores de fecha y hora
Puede restar dos valores de fecha y hora para devolver un intervalo. Debe incluir un calificador de intervalo en la expresión para indicar la precisión en la que debe devolverse el resultado. Por ejemplo:
(CURRENT_DATE - DATE '1776-07-04') DAY

devuelve el número de días desde el 4 de Julio de 1776, donde:

(CURRENT_TIME - TIME '00:00:00') MINUTE TO SECOND

devuelve la antigüedad del día en minutos y segundos.

Intervalos de escalado
Puede multiplicar o dividir un valor de intervalo por un factor de entero:
INTERVAL '2:30' MINUTE TO SECOND / 4