如何使用add_months函数

时间:2018-02-05 17:16:16

标签: oracle date-arithmetic

我正在尝试使用oracle数据库中的 add_months 添加具有特定日期的日期。 我写了这一行:

SELECT ADD_MONTHS('01-JAN-2018', MONTHS_BETWEEN('02-JAN-2018', '01-JAN-2018')) FROM DUAL;

返回:

01-JAN-18

为什么不返回 02-JAN-18 ?我可以使用此功能在日期中添加一天吗?

1 个答案:

答案 0 :(得分:0)

  

为什么不回归02-JAN-18 ??

根据MONTHS_BETWEEN文档,

  

MONTHS_BETWEEN函数计算之间的月数   两个约会。当两个日期具有相同的日期组件或两者都是   该月的最后一天,则返回值为整数。   否则,返回值包括一个考虑的分数   基于31天月份的天数差异

所以,

select MONTHS_BETWEEN('02-JAN-2018', '01-JAN-2018') FROM DUAL ; 

产量

.0322580645161290322580645161290322580645

ADD_MONTHS返回日期日期加整数月份。 因此,.0322..被视为整数0,您的查询等同于

SELECT ADD_MONTHS('01-JAN-2018', 0) FROM DUAL;

为了增加1个月,只需取两个日期的差异。

SELECT ADD_MONTHS(DATE '2018-01-01', DATE '2018-01-02' - DATE '2018-01-01') FROM DUAL;

或者更好的是,添加1个月的INTERVAL

SELECT DATE '2018-01-01' + INTERVAL '1' MONTH FROM DUAL; 

要回答您的问题,添加1天,只需使用

即可
SELECT DATE '2018-01-01' + 1 FROM DUAL;