函数说明
ADD_MONTHS(date, number[,mode])函数是在一个日期上加上指定的月份数,其
中,日期中的日是不变的。
GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
775
如果开始日期为某月的最后一天,且结果月份的天数比开始月份的天数少,结果
将会返回对应结果月份的最后一天。
表5- 19 参数说明
参数名称
描
述
date
Descripti 一个日期数值。
number
加上的月份数,如果是要减去的月份数,则为负数。
mode
若开始日期为某月的最后一天,且结果月份的天数比开始月
份的天数多,则根据mode 值返回结果。若mode 为0,则返
回开始日期对应的一天;
若为1,
则返回对应结果月份的最后
一天。默认值为0。
示例
示例1:在当前日期时间上加上3 个月,日期中的日不变。
gbase> SELECT NOW(),ADD_MONTHS(NOW(),3) AS f_Show FROM dual;
+---------------------+---------------------+
| NOW()
| f_Show
|
+---------------------+---------------------+
| 2020-04-01 13:55:56 | 2020-07-01 13:55:56 |
+---------------------+---------------------+
1 row in set
示例2:增加的月份为负数时,相当于提前月份数。
gbase> SELECT NOW(),ADD_MONTHS(NOW(),-3) AS f_Show FROM
dual;
+---------------------+---------------------+
| NOW()
| f_Show
|
+---------------------+---------------------+
| 2020-04-01 13:56:26 | 2020-01-01 13:56:26 |
+---------------------+---------------------+
1 row in set
示例3:通过使用to_date 函数,转换为日期型后,再加上指定的月份。
gbase> SELECT
ADD_MONTHS(TO_DATE('2020-3-15','YYYY-MM-DD'),3) AS f_Show
FROM dual;
+------------+
| f_Show
|
+------------+
| 2020-06-15 |
+------------+
1 row in set
GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
776
示例4:date 为TO_DATE()函数,且TO_DATE()函数的参数为日期时间格式。
gbase> SELECT ADD_MONTHS(TO_DATE('2020-3-15
12:20:31','YYYY-MM-DD HH24:MI:SS'),3) AS f_Show FROM dual;
+---------------------+
| f_Show
|
+---------------------+
| 2020-06-15 12:20:31 |
+---------------------+
1 row in set
示例5:8 月31 日是8 月份最后一天,增加3 个月后,是11 月份,11 月共有30
天,因此结果就是“2019-11-30”。
gbase> SELECT
ADD_MONTHS(TO_DATE('2019-8-31','YYYY-MM-DD'),3) AS f_Show
FROM dual;
+------------+
| f_Show
|
+------------+
| 2019-11-30 |
+------------+
1 row in set
示例6:11 月30 日是11 月份最后一天,减少1 个月后,是10 月份,10 月共有
31 天,因此结果就是“2019-10-30”。
gbase> SELECT
ADD_MONTHS(TO_DATE('2019-11-30','YYYY-MM-DD'),-1) AS f_Show
FROM dual;
+------------+
| f_Show
|
+------------+
| 2019-10-30 |
+------------+
1 row in set
示例7:
2 月28 日是2 月份最后一天,
减少1 个月后,
是1 月份,
默认mode 为0,
则返回“2020-01-28”。
gbase> SELECT
ADD_MONTHS(TO_DATE('2020-02-28','YYYY-MM-DD'),-1) FROM dual;
+---------------------------------------------------+
| ADD_MONTHS(TO_DATE('2020-02-28','YYYY-MM-DD'),-1) |
+---------------------------------------------------+
| 2020-01-28
|
+---------------------------------------------------+
GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
777
1 row in set (Elapsed: 00:00:00.01)
若mode 为1,则返回“2020-01-31”。
gbase> SELECT
ADD_MONTHS(TO_DATE('2020-02-28','YYYY-MM-DD'),-1,1) FROM
dual;
+-----------------------------------------------------+
| ADD_MONTHS(TO_DATE('2020-02-28','YYYY-MM-DD'),-1,1) |
+-----------------------------------------------------+
| 2020-01-28
|
+-----------------------------------------------------+
1 row in set (Elapsed: 00:00:00.01)