В вашем вопросе упоминается тип данных INTERVAL, хотя из ваших примеров не ясно, где и когда это происходит. Арифметика с датами и интервалами довольно проста;
SQL> select d1
2 , d2
3 , case when d2 > d1 + to_dsinterval ('10 0:0:0')
4 then 'no'
5 else 'yes' end
6 from t34
7/
D1 D2 CAS
--------- --------- ---
02-JUL-10 25-JUN-10 yes
02-JUL-10 24-AUG-10 no
02-JUL-10 26-MAY-10 yes
02-JUL-10 25-JUL-10 no
02-JUL-10 15-APR-09 yes
02-JUL-10 13-JUL-10 no
6 rows selected.
SQL>
Когда оба столбца интервального типа данных, арифметика явно работает:
SQL> select intvl1
2 , intvl2
3 , case when intvl2 > intvl1
4 then 'no'
5 else 'yes' end
6 from t34
7/
INTVL1 INTVL2 CAS
-------------------- -------------------- ---
+10 00:00:00.000000 +07 00:00:00.000000 yes
+10 00:00:00.000000 -53 00:00:00.000000 yes
+10 00:00:00.000000 +37 00:00:00.000000 no
+10 00:00:00.000000 -23 00:00:00.000000 yes
+10 00:00:00.000000 +78 00:00:00.000000 no
+10 00:00:00.000000 -11 00:00:00.000000 yes
6 rows selected.
SQL>
Сравнивая разницу между двумя датами и интервалом подпруга ...
SQL> select d1
2 , d2
3 , intvl1
4 , case when numtodsinterval(d1-d2, 'DAY') > intvl1
5 then 'no'
6 else 'yes' end
7 from t34
8/
D1 D2 INTVL1 CAS
--------- --------- -------------------- ---
02-JUL-10 25-JUN-10 +10 00:00:00.000000 yes
02-JUL-10 24-AUG-10 +10 00:00:00.000000 yes
02-JUL-10 26-MAY-10 +10 00:00:00.000000 no
02-JUL-10 25-JUL-10 +10 00:00:00.000000 yes
02-JUL-10 15-APR-10 +10 00:00:00.000000 no
02-JUL-10 13-JUL-10 +10 00:00:00.000000 yes
6 rows selected.
SQL>
Короче , трудно понять, что вы делаете, чтобы получить сообщение об ошибке. Поэтому вам нужно отредактировать свой вопрос и предоставить более подробную информацию. Опишите таблицу. Предоставьте некоторые образцы данных. Кроме того, дайте нам полное сообщение об ошибке.
Мы можем проголосовать за ответы на наши вопросы. Предел в 15 пунктов - это ответ на ответы * на вопросы других людей. – APC
Нет, это не позволило мне. :-( – jeffspost
Но я могу голосовать сейчас. :-) – jeffspost