

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# ADD\$1MONTHS 函数
<a name="ADD_MONTHS"></a>

ADD\$1MONTHS 会将指定的月数添加到日期或时间戳值或表达式中。[DATE\$1ADD](DATE_ADD_function.md) 函数提供了类似的功能。

## 语法
<a name="ADD_MONTHS-synopsis"></a>

```
ADD_MONTHS( {date | timestamp}, integer)
```

## 参数
<a name="ADD_MONTHS-arguments"></a>

 *date* \$1 *timestamp*   
日期或时间戳列，或隐式转换为日期或时间戳的表达式。如果日期是该月的最后一天，或者如果产生的月份较短，则函数在结果中返回该月的最后一天。对于其他日期，结果包含与日期表达式相同的日期编号。

 *integer*   
正整数或负整数。使用负数从日期中减去月份。

## 返回类型
<a name="ADD_MONTHS-return-type"></a>

TIMESTAMP

## 示例
<a name="ADD_MONTHS-example"></a>

以下查询使用 TRUNC 函数内的 ADD\$1MONTHS 函数。TRUNC 函数从 ADD\$1MONTHS 的结果中删除一天中的时间。ADD\$1MONTHS 函数会为 CALDATE 列中的每个值添加 12 个月。

```
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)
```

以下示例演示 ADD\$1MONTHS 函数在具有不同天数的月份的日期上运行时的行为。

```
select add_months('2008-03-31',1);

add_months
---------------------
2008-04-30 00:00:00
(1 row)

select add_months('2008-04-30',1);

add_months
---------------------
2008-05-31 00:00:00
(1 row)
```