22,300
社区成员




前提:A表表字段(简称为B)是字符型,原始数据里面存的是yyyymmdd的这种日期,但也有一下数据的这个字段是存的000000。
用别的表关联A表,得到的字段B里面的数据都是yyyymmdd的数字,对这个字段用to_date也能正常转换。这部分数据能确保没问题,用with C()的形式封装一下
但在最外面一层 用这个语句:select * from C where to_char(to_date(B,'yyyy-mm-dd'),'yyyy-mm-dd') <='2023-01-01'
就是会报ORA-01861: 文字与格式字符串不匹配。明明我子查询C里面得到的数据都是正常的日期格式,为什么一直提示不对,要先对A表的这个字段有000000 的数用case when 转化为一个正确的日期,我上面这句话才执行得出来。
想了解oracle 对这里的处理逻辑是怎么来的?