如何使用 add_months 函数添加具有特定日期的一天
How to add a day with a specific date using add_months function
我正在尝试使用 oracle 数据库中的 add_months 添加具有特定日期的一天。
我写了这一行:
SELECT ADD_MONTHS('01-JAN-2018', MONTHS_BETWEEN('02-JAN-2018', '01-JAN-2018')) FROM DUAL;
这个returns:
01-JAN-18
为什么不 return 02-JAN-18?我可以使用此功能在日期上加一天吗?
Why doesn't it return 02-JAN-18??
根据 MONTHS_BETWEEN 文档,
The MONTHS_BETWEEN function calculates the number of months between
two dates. When the two dates have the same day component or are both
the last day of the month, then the return value is a whole number.
Otherwise, the return value includes a fraction that considers the
difference in the days based on a 31-day month
所以,
select MONTHS_BETWEEN('02-JAN-2018', '01-JAN-2018') FROM DUAL ;
产量
.0322580645161290322580645161290322580645
ADD_MONTHS
returns日期日期加整数月。
因此,.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;
我正在尝试使用 oracle 数据库中的 add_months 添加具有特定日期的一天。 我写了这一行:
SELECT ADD_MONTHS('01-JAN-2018', MONTHS_BETWEEN('02-JAN-2018', '01-JAN-2018')) FROM DUAL;
这个returns:
01-JAN-18
为什么不 return 02-JAN-18?我可以使用此功能在日期上加一天吗?
Why doesn't it return 02-JAN-18??
根据 MONTHS_BETWEEN 文档,
The MONTHS_BETWEEN function calculates the number of months between two dates. When the two dates have the same day component or are both the last day of the month, then the return value is a whole number. Otherwise, the return value includes a fraction that considers the difference in the days based on a 31-day month
所以,
select MONTHS_BETWEEN('02-JAN-2018', '01-JAN-2018') FROM DUAL ;
产量
.0322580645161290322580645161290322580645
ADD_MONTHS
returns日期日期加整数月。
因此,.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;