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