当前位置: 代码迷 >> Oracle管理 >> ORA-01843: 无效的月份解决方案
  详细解决方案

ORA-01843: 无效的月份解决方案

热度:37   发布时间:2016-04-24 05:22:14.0
ORA-01843: 无效的月份
感觉很是奇怪:
数据库中的日期:

1996-12-01
1997-12-01
1998-12-01
1999-12-01
2000-12-01
2001-12-01
2002-12-01
2003-12-01
200504
200602
200801
200812
200812
200911
201012
都是varchar类型 ,我把转换成date类型,

代码如下
SQL code
 DECLARE v_date DATE; v_errmsg VARCHAR2(1000); BEGIN FOR arec IN (SELECT AIC081 FROM xrsiqj.ic02WHERE aac001 = '8')LOOP BEGIN IF LENGTH(arec.aic081) = 6 THEN   v_date := to_date(arec.aic081,'yyyymm'); ELSIF  LENGTH(arec.aic081) = 10 THEN   v_date := to_date(arec.aic081,'yyyymmdd');  ELSE   v_date := '1234'; END IF; dbms_output.put_line(v_date); EXCEPTION    WHEN OTHERS THEN     v_errmsg := SQLERRM;     dbms_output.put_line(v_errmsg); END;    END LOOP;END;


结果输出悲剧了:
ORA-01843: 无效的月份
ORA-01843: 无效的月份
ORA-01843: 无效的月份
ORA-01843: 无效的月份
ORA-01843: 无效的月份
ORA-01843: 无效的月份
ORA-01843: 无效的月份
ORA-01843: 无效的月份
01-4月 -05
01-2月 -06
01-1月 -08
01-12月-08
01-12月-08
01-11月-09
01-12月-10
也就是前面这个几个月都是无效的月份,为什么?

------解决方案--------------------
to_date(arec.aic081,'yyyy-mm-dd');
  相关解决方案