为什么明显错误的SQL语句竟然能正确执行?
select * from tbl_prd_suplr t where t.reg_dat > to_date('20120203', 'yyyy-mm-dd')
这句SQL语句的where条件明显是错误的,
因为“20120203”并不符合“yyyy-mm-dd”的格式,
但是to_date函数竟然不报错,能够正常执行,而且执行结果还是对的!
我还试过to_date('20120203', 'yyyy/mm/dd'),也能正常执行,
但是to_date('2012-02-03', 'yyyy/mm/dd')就会出错。
这是怎么一回事?to_date函数这么智能了?我Out了?
我用的是Oracle 11g
------解决方案--------------------数据库默认的下面可以转换:
select to_date('20120203', 'yyyy-mm-dd') from dual;
但如果用:to_date('2012-02-03', 'yyyy/mm/dd')
数据库则会判断 -与/格式不一致。
------解决方案--------------------to_date('20120203', 'yyyy-mm-dd') 这个肯定没问题 都是对应的8位 右没符号转换到有符号可以
但是o_date('2012-02-03', 'yyyy/mm/dd') -和/不一致 肯定会报错 可以先转换成yyyymmdd
------解决方案--------------------学习了,原来还真不知道有这回事。