Função ADD_MONTHS
ADD_MONTHS adiciona o número especificado de meses a um valor ou expressão de data ou timestamp. A função DATEADD oferece funcionalidade semelhante.
Sintaxe
ADD_MONTHS( {date | timestamp}, integer)
Argumentos
- date | timestamp
-
Uma coluna de tipo de dados
DATE
ouTIMESTAMP
ou uma expressão que é avaliada implicitamente como um tipoDATE
ouTIMESTAMP
. Se a data for o último dia do mês ou se o mês resultante for mais curto, a função retorna o último dia do mês nos resultados. Para outras datas, o resultado contém o mesmo número de dia que a expressão de data. - inteiro
-
Um valor de tipo de dados
INTEGER
. Use um número negativo para subtrair meses de datas.
Tipo de retorno
TIMESTAMP
Exemplos
A seguinte consulta usa a função de ADD_MONTHS dentro de uma função TRUNC. A função TRUNC remove o horário do dia dos resultados de ADD_MONTHS. A função ADD_MONTHS adiciona 12 meses a cada valor da coluna CALDATE. Os valores na coluna CALDATE são datas.
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)
O exemplo a seguir usa a função ADD_MONTHS para adicionar um mês a um carimbo de data/hora.
select add_months('2008-01-01 05:07:30', 1);
add_months
---------------------
2008-02-01 05:07:30
Os seguintes exemplos demonstram o comportamento quando a função ADD_MONTHS opera em datas com meses que têm diferentes número de dias. Este exemplo mostra como a função lida com a adição de um mês a 31 de março e a adição de um mês a 30 de abril. Abril tem 30 dias, então adicionar 1 mês a 31 de março resulta em 30 de abril. Maio tem 31 dias, então adicionar 1 mês a 30 de abril resulta em 31 de maio.
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