這裏的問題似乎是在NEXT_CHARGE_DATE
的類型。
例如,如果我檢查就像對一個date
你的一個變量,我沒有問題:
SQL> define REPORT_DATE = to_date('05112016','ddmmyyyy');
SQL> select 1 from dual where sysdate = &report_date;
old 1: select 1 from dual where sysdate = &report_date
new 1: select 1 from dual where sysdate = to_date('05112016','ddmmyyyy')
no rows selected
不管,如果我每天添加到變量值,它仍然有效:
SQL> select 1 from dual where sysdate = &report_date +1;
old 1: select 1 from dual where sysdate = &report_date +1
new 1: select 1 from dual where sysdate = to_date('05112016','ddmmyyyy') +1
no rows selected
如果我試圖用一個對象,它是不是一個date
變量比較,說number
,我中有你的錯誤:
SQL> select 1 from dual where 1 = &report_date +1;
old 1: select 1 from dual where 1 = &report_date +1
new 1: select 1 from dual where 1 = to_date('05112016','ddmmyyyy') +1
select 1 from dual where 1 = to_date('05112016','ddmmyyyy') +1
*
ERROR at line 1:
ORA-00932: inconsistent datatypes: expected NUMBER got DATE
不管我刪除+1
,我仍然得到同樣的錯誤,因爲這個問題是在類型你是比較,不是在路上的對象的你,每天添加到您的變量:
SQL> select 1 from dual where 1 = &report_date;
old 1: select 1 from dual where 1 = &report_date
new 1: select 1 from dual where 1 = to_date('05112016','ddmmyyyy')
select 1 from dual where 1 = to_date('05112016','ddmmyyyy')
*
ERROR at line 1:
ORA-00932: inconsistent datatypes: expected NUMBER got DATE
爲了解決這個問題,您應該檢查NEXT_CHARGE_DATE
的類型,並在代碼中添加一些to_char
,to_number
或to_date
以比較相同類型的對象。
隨着date
列,一切工作正常,我(Oracle數據庫11g Express Edition的發佈11.2.0.2.0 - 64位生產):
SQL> create table STG_PREP_CHARGES_PLAN (NEXT_CHARGE_DATE date);
Table created.
SQL> define REPORT_DATE = to_date('05112016','ddmmyyyy');
SQL> select *
2 from STG_PREP_CHARGES_PLAN SPCP
3 where &REPORT_DATE + 1 < SPCP.NEXT_CHARGE_DATE;
old 3: where &REPORT_DATE + 1 < SPCP.NEXT_CHARGE_DATE
new 3: where to_date('05112016','ddmmyyyy') + 1 < SPCP.NEXT_CHARGE_DATE
no rows selected
如果你在'TO_DATE編輯代碼( '05112016' ,'ddmmyyyy')+ 1
Aleksej
問題的關鍵是'SPCP.NEXT_CHARGE_DATE'是一個日期還是別的(像一個數字或字符串,類似於'05112016')? – mathguy
請添加代碼上下文(前後一些行) –