我正在尝试使用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 ?我可以使用此功能在日期中添加一天吗?
答案 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;