

 从补丁 198 开始，Amazon Redshift 将不再支持创建新的 Python UDF。现有的 Python UDF 将继续正常运行至 2026 年 6 月 30 日。有关更多信息，请参阅[博客文章](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)。

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

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

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

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

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

 *date* \$1 *timestamp*   
数据类型为 `DATE` 或 `TIMESTAMP` 的列，或一个隐式计算结果为 `DATE` 或 `TIMESTAMP` 类型的表达式。如果日期是该月的最后一天，或者如果产生的月份较短，则函数在结果中返回该月的最后一天。对于其他日期，结果包含与日期表达式相同的日期编号。

 *integer*   
数据类型 `INTEGER` 的值。使用负数从日期中减去月份。

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

TIMESTAMP

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

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

```
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 函数给*时间戳* 加上 1 个月。

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

add_months
---------------------
2008-02-01 05:07:30
```

以下示例演示 ADD\$1MONTHS 函数在具有不同天数的月份的日期上运行时的行为。此示例说明该函数如何处理在 3 月 31 日的基础上再加上 1 个月以及在 4 月 30 日的基础上再加上 1 个月的情况。4 月有 30 天，所以在 3 月 31 日的基础上再加上 1 个月，结果是 4 月 30 日。5 月有 31 天，所以在 4 月 30 日的基础上再加上 1 个月，结果是 5 月 31 日。

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