執行一個簡單的查詢select * from vw_name where 1=1 and create_date<='2019-12-16'
create_date是個varchar2,正常來說應該是沒問題的,但是突然就報ORA-01840。
解決過程,因爲vw_name是個視圖,裏面的create_date 是從原始表中轉換來的。
to_char(to_date(p.create_date, 'yyyy-mm-dd hh24:mi:ss'),'yyyy-mm-dd') create_date,
就是把原始表中的create_date先轉成date,再轉成varchar2。
原始表中的create_date的數據爲varchar2 , 可以爲yyyy-mm-dd HH24:mi:ss 或者 yyyy-mm-dd ,都沒有問題。
但是,重點是, 在原始表的數據中發現了一條數據,他的create_date 是 334 。我去嘞。
改掉這條數據的create_date後。一切正常。
所以,引起這個錯誤,可能是錯誤的數據格式。