Oracle error code解析

ORA-01810: format code appears twice

     该异常一般出现在使用to_date函数时。我们在制定to_date转换格式时,如果将格式写成'yyyy-mm-dd hh:MM:ss'就会抛此异常。因为在oracle中日期格式是不区分大小写的,因此系统会认为'mm' 与 'MM'等同,即出现了两次。

        正确的写法是:
        to_date('2006-06-01 18:00:00' 'yyyy-mm-dd hh:mi:ss')

        to_date('2006-06-01 18:00:00' 'yyyy-mm-dd hh12:mi:ss')

        to_date('2006-06-01 18:00:00' 'yyyy-mm-dd hh24:mi:ss')

        其中,hh和hh12效果等同。

 

        除了在to_date函数中使用'yyyy-mm-dd hh:MM:ss' 转换会出问题,在to_char中也会,只不过系统不会因此抛出异常。分析如下代码:

       假设当前系统时间是 3/5/2010 6:00:57 pm,使用to_char转换格式

       to_char(sysdate, 'yyyy-mm-dd hh:MM:ss' )

       期待转换结果:2010-03-05 06:00:57

       实际转换结果:2010-03-05 06:03:57

       产生此错误就是因为系统认为mm和MM等同,并将月份位(mm)的值添加到了分钟位。

 

你可能感兴趣的:(oracle)