执行一个简单的查询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后。一切正常。
所以,引起这个错误,可能是错误的数据格式。