Добавление одного дня к дате в Oracle - PullRequest
0 голосов
/ 29 января 2019

Я смотрел похожие темы, но, похоже, ничего не ответило.Вот что у меня есть.

FDTMDUEDATE+1   >= Rundate

Это приносит мне эту ошибку: ORA-01841: (полный) год должен быть между -4713 и +9999, а не 0

Если я делаю

FDTMDUEDATE-1  >= Rundate

Это будет работать без проблем.Любая помощь была бы отличной, спасибо

1 Ответ

0 голосов
/ 29 января 2019

Добавление 1 к дате Oracle работает должным образом, то есть добавляет дату к одному дню:

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

Однако, как объяснено в Типы данных датыдокументация :

Действительный диапазон дат с 1 января 4712 г. до н.э. до 31 декабря 9999 г. н.э.

В вашем случае использования вполне вероятно, что выпревышение верхнего предела, как показано в этом утверждении:

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

Добавление 1 дня к '9999-12-31' приводит к выходу даты из допустимого диапазона, что приводит к ошибке ORA-01841.

Это не похоже на нормальную ситуацию, когда вы обрабатываете такие далёкие будущие даты, и вам, вероятно, нужно выяснить, почему.

Тем временем вы сможете обойти проблему, переписав это:

FDTMDUEDATE + 1 >= Rundate

Кому:

FDTMDUEDATE >= Rundate - 1

(Если, конечно, Rundate не равно 1 января 4712 г. до н.э. ...)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...