我看过类似的主题,但似乎没有答案。这就是我所拥有的。
FDTMDUEDATE+1 >= Rundate
这给我带来了这个错误: ORA-01841 :(完整)年份必须在-4713和+9999之间,并且不能为0
如果我这样做
FDTMDUEDATE-1 >= Rundate
它将正常工作。任何帮助都会很棒,谢谢
答案 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日...)