Función escalar ADD_MONTHS

La función ADD_MONTHS devuelve un valor de fecha y hora que representa la expresión más un número de meses especificado.

Leer el esquema de sintaxisOmitir el esquema de sintaxis visualADD_MONTHS(expresión, expresión-numérica)

El esquema es SYSIBM.

expresión
Expresión que especifica la fecha inicial. La expresión debe devolver un valor de uno de los siguientes tipos de datos incorporados: valor DATE o valor TIMESTAMP.
expresión-numérica
Expresión que devuelve un valor de cualquier tipo de datos numérico incorporado. Si el valor no es del tipo INTEGER, se convierte de forma implícita en INTEGER antes de evaluar la función. La expresión-numérica indica el número de meses que se añadirán a la fecha inicial especificada en expresión. Está permitido el uso de valores numéricos negativos.

El resultado de la función tiene el mismo tipo de datos que expresión, a menos que expresión sea una serie, en cuyo caso el tipo de datos del resultado es DATE. El resultado puede ser nulo; si cualquier argumento es nulo, el resultado es el valor nulo.

Si expresión es el último día del mes o si el mes resultante tiene menos días que el componente de día de expresión, el resultado es el último día del mes resultante. En cualquier otro caso, el resultado tiene el mismo componente de día que expresión. La función no modifica la información de horas, minutos, segundos o segundos fraccionarios incluida en expresión.

Ejemplos

  • Ejemplo 1: supongamos que hoy es 31 de enero de 2007. Establecer la variable del lenguaje principal ADD_MONTH con el último día de enero más un mes.
    
         SET :ADD_MONTH = ADD_MONTHS(LAST_DAY(CURRENT_DATE), 1);

    La variable del lenguaje principal ADD_MONTH se establece con el valor que representa el final de febrero, 2007-02-28.

  • Ejemplo 2: supongamos que DATE es una variable del lenguaje principal con el valor 27 de julio de 1965. Establecer la variable del lenguaje principal ADD_MONTH con el valor de ese día más tres meses.
    
         SET :ADD_MONTH = ADD_MONTHS(:DATE,3);

    La variable del lenguaje principal ADD_MONTH se establece con el valor que representa ese día más tres meses, 1965-10-27.

  • Ejemplo 3: Se puede utilizar la función ADD_MONTHS para lograr resultados similares como aritmética de fecha y hora. En los ejemplos siguientes se muestran las similitudes y las diferencias.
    
         SET :DATEHV = DATE('2008-2-28') + 4 MONTHS;
         SET :DATEHV = ADD_MONTHS('2008-2-28', 4);

    En ambos casos, la variable del lenguaje principal DATEHV se establece con el valor '2008-06-28'.

    Ahora consideremos el mismo ejemplo pero con la fecha '2008-2-29' como argumento.

    
         SET :DATEHV = DATE('2008-2-29') + 4 MONTHS;

    La variable del lenguaje principal DATEHV se establece con el valor '2008-06-29'.

    
         SET :DATEHV = ADD_MONTHS('2008-2-29', 4);

    La variable del lenguaje principal DATEHV se establece con el valor '2008-06-30'.

    En este caso, la función ADD_MONTHS devuelve el último día del mes, que es el 30 de junio de 2008, en lugar del 29 de junio de 2008. El motivo es que el 29 de febrero es el último día del mes. Por lo tanto, la función ADD_MONTHS devuelve el último día de junio.