早上运行一段代码的时候发现to_char函数他失效了,具体代码及结果如下图:其中flt_date_3是原始值,在转成日期的时候一切还都正常flt_date_2,但是日期转回字符格式的时候就出现问题了,见flt_date_1和flt_date_4
求各位大神 这个情况该怎么解决,我用的是oracle11g

解决方案 »

  1.   

    把to_date时候的yyyymmdd改成yyyy-mm-dd
      

  2.   


    试试select to_char(to_date('2015-01-01','yyyy-mm-dd'),'mm/dd/yyyy') from dual能正常查到值吗,如果这个没问题的话,看看你字段的类型,单独粘贴出来几个值试试,应该就能找到原因了,如果不行的话,我就没办法了没碰到过这样的情况。
      

  3.   

    直接to_char(s.flt_date,'mm/dd/yyyy')
    本来就是date to_date干嘛
      

  4.   

    哔了狗了 这个单独拿出来又是正常的 邪门了原始类型是varchar 的
    现在只能用 
    substr(s.flt_date,5,2)||'/'||substr(s.flt_date,-2)||'/'||substr(s.flt_date,1,4)
      

  5.   

    和flt_date字段数据的有关,转日期是看字段数据是否和掩码一致,字段长度是否和掩码一样长,会不会有结束符等看不见的不明字符,另外注意varchar与varchar2的区别