首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

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

2012-05-06 
ORA-01843: 无效的月份感觉很是奇怪:数据库中的日期:1996-12-011997-12-011998-12-011999-12-012000-12-01

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');

热点排行