跳到主要内容

ADD_MONTHS

新增或更新于:v1.2.760

add_months() 函数向给定日期或时间戳添加指定的月数。

若输入日期为月末日期,或超出结果月份的天数范围,则结果将调整为新月份的最后一天;否则,保留原日期中的天数。

语法

ADD_MONTHS(<date_or_timestamp>, <number_of_months>)
参数描述
<date_or_timestamp>作为基准的日期或时间戳,月份将添加至此
<number_of_months>需添加的整数月份数(可为负数表示减去月份)

返回类型

返回 TIMESTAMPDATE 类型

示例

基本月份加法

SELECT ADD_MONTHS('2023-01-15'::DATE, 3);
├───────────────────────────────────┤
2023-04-15
╰───────────────────────────────────╯

月份减法

SELECT ADD_MONTHS('2023-06-20'::DATE, -4);
├─────────────────────────────────────┤
2023-02-20
╰─────────────────────────────────────╯

月末调整

SELECT ADD_MONTHS('2023-01-31'::DATE, 1);
├───────────────────────────────────┤
2023-02-28
╰───────────────────────────────────╯

保留时间戳

SELECT ADD_MONTHS('2023-03-15 14:30:00'::TIMESTAMP, 5);
├─────────────────────────────────────────────────┤
2023-08-15 14:30:00.000000
╰─────────────────────────────────────────────────╯

月末日期处理

CREATE TABLE contracts (
id INT,
sign_date DATE,
duration_months INT
);

INSERT INTO contracts VALUES
(1, '2023-01-15', 12),
(2, '2024-02-28', 6),
(3, '2023-11-30', 3);

SELECT
id,
sign_date,
ADD_MONTHS(sign_date, duration_months) AS end_date
FROM contracts;
├─────────────────┼────────────────┼────────────────┤
12023-01-152024-01-15
22024-02-282024-08-28
32023-11-302024-02-29
╰───────────────────────────────────────────────────╯

另请参阅

  • DATE_ADD:添加特定时间间隔的替代函数
  • DATE_SUB:减去时间间隔的函数
开始使用 Databend Cloud
低成本
快速分析
多种数据源
弹性扩展
注册