Función ADD_MONTHS - Amazon Redshift

Función ADD_MONTHS

ADD_MONTHS agrega la cantidad de meses especificada a una expresión o un valor de fecha o marca temporal. La función DATEADD ofrece una funcionalidad similar.

Sintaxis

ADD_MONTHS( {date | timestamp}, integer)

Argumentos

date | timestamp

Una columna de tipo de datos DATE o TIMESTAMP, o una expresión que toma implícitamente el valor de un tipo DATE o TIMESTAMP. Si la fecha es el último día del mes, o si el mes resultante es más corto, la función devuelve el último día del mes en el resultado. Para otras fechas, el resultado tiene el mismo número de día que la expresión de fecha.

integer

Un valor de tipo de datos INTEGER. Use un número negativo para restar meses de las fechas.

Tipo de retorno

TIMESTAMP

Ejemplos

La siguiente consulta utiliza la función ADD_MONTHS dentro de una función TRUNC. La función TRUNC quita la hora del día del resultado de ADD_MONTHS. La función ADD_MONTHS agrega 12 meses a cada valor de la columna CALDATE. Los valores de la columna CALDATE son fechas.

select distinct trunc(add_months(caldate, 12)) as calplus12, trunc(caldate) as cal from date order by 1 asc; calplus12 | cal ------------+------------ 2009-01-01 | 2008-01-01 2009-01-02 | 2008-01-02 2009-01-03 | 2008-01-03 ... (365 rows)

En el siguiente ejemplo se utiliza la función ADD_MONTHS para sumar 1 mes a un valor timestamp.

select add_months('2008-01-01 05:07:30', 1); add_months --------------------- 2008-02-01 05:07:30

En los ejemplos a continuación, se demuestra el comportamiento resultante cuando la función ADD_MONTHS opera sobre fechas con meses que tienen diferente cantidad de días. En este ejemplo se muestra cómo la función controla sumar 1 mes al 31 de marzo y sumar 1 mes al 30 de abril. Abril tiene 30 días, por lo que sumar 1 mes al 31 de marzo da como resultado el 30 de abril. Mayo tiene 31 días, por lo que sumar 1 mes al 30 de abril da como resultado el 31 de mayo.

select add_months('2008-03-31',1); add_months --------------------- 2008-04-30 00:00:00 select add_months('2008-04-30',1); add_months --------------------- 2008-05-31 00:00:00