在Oracle中为日期添加一天

时间:2019-01-29 15:52:59

标签: oracle date

我看过类似的主题,但似乎没有答案。这就是我所拥有的。

FDTMDUEDATE+1   >= Rundate

这给我带来了这个错误: ORA-01841 :(完整)年份必须在-4713和+9999之间,并且不能为0

如果我这样做

FDTMDUEDATE-1  >= Rundate

它将正常工作。任何帮助都会很棒,谢谢

1 个答案:

答案 0 :(得分:1)

在Oracle日期中添加1确实可以按预期方式工作,即,它确实将日期添加了一天:

SELECT TO_DATE('2019-01-29', 'yyyy-mm-dd' ) + 1 tomorrow FROM DUAL;
| TOMORROW  |
| :-------- |
| 30-JAN-19 |

但是,如the Date Data Types documentation中所述:

  

有效日期范围为公元前4712年1月1日至9999年12月31日。

在您的用例中,很可能达到了上限,如以下语句所示:

SELECT TO_DATE('9999-12-31', 'yyyy-mm-dd' ) + 1 out_of_range FROM DUAL;
ORA-01841: (full) year must be between -4713 and +9999, and not be 0

'9999-12-31'添加1天会导致日期超出允许的范围,从而导致错误ORA-01841

您正在处理如此遥远的日期看起来不正常,您可能需要调查原因。

同时,您应该可以通过改写此方法来解决该问题:

FDTMDUEDATE + 1 >= Rundate

收件人:

FDTMDUEDATE >= Rundate - 1

(除非Rundate等于公元前4712年1月1日...)