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

解决方案 »

  1.   

    数据库默认的下面可以转换:
    select to_date('20120203', 'yyyy-mm-dd') from dual;但如果用:to_date('2012-02-03', 'yyyy/mm/dd')
    数据库则会判断 -与/格式不一致。
      

  2.   

    to_date('20120203', 'yyyy-mm-dd')  这个肯定没问题 都是对应的8位 右没符号转换到有符号可以 但是o_date('2012-02-03', 'yyyy/mm/dd') -和/不一致 肯定会报错 可以先转换成yyyymmdd
     
      

  3.   

    to_date()其实没这么智能,但是全数字的时候,oracle约定可以转换,虽然和指定的日期格式不匹配!
      

  4.   

    你用的是Orcale什么版本,我用11g测试了一下,都可以正常运行。
      

  5.   

    to_date(日期,格式化)  即将日期转成后面的格式
    这下应该没问题了吧