資料庫報ORA-01839的錯誤

zzhuaze發表於2022-03-23

【問題描述】ZCGL資料庫在執行SQL語句的時候報:ORA-01839 指定月份的日期無效

e8741719-eb0c-412a-be3a-af5080909ecd

詳細的SQL語句簡化如下:

select *from table_namewhere to_date(a.yc_date,'yyyy-mm-dd')-sysdate>1

【問題的原因】ORA-01839表明z_yc_date的結果集的日期有不符合相應的日期標準,常見的有

select to_date('2015/2/31','yyyy/mm/dd')  from dual;因為2月沒有31號,所以就會報ORA-01839的錯誤;

 

【解決方法】針對這個錯誤問題有兩個解決方法:

1、找出源資料中,不符合規範的日期(已把結果集匯出但並沒有發現很明顯的錯誤);

2、改寫相應的SQL語句,改寫如下

select *  from table_namewhere ya.c_date>=to_char(sysdate,'yyyy-mm-dd'))  #透過字元型去比較

【總結】以上的問題其實可以在建表的時候就進行規避,建議是用來存放時間日期的列,建議在建立表的時候直接設定該列的型別為date,對於後續的管理和效能都是有很大的好處; 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70015609/viewspace-2883529/,如需轉載,請註明出處,否則將追究法律責任。

相關文章