日期:2014-05-17  浏览次数:21259 次

to_date,select 显示正常,update报错01840,输入值对于日期格式不够长

select remove_date,to_char(add_months(to_date(remove_date,'yyyymmdd'),-1),'yyyymm') from SREMOVE;

remove_date的格式是'20120105'
查询可以正常显示,

alter table SREMOVE add BILL varchar2(20);
update SREMOVE set BIL =  to_char(add_months(to_date(remove_date,'yyyymmdd'),-1),'yyyymm');
commit; 

执行update操作报错 ora-01840 输入值对于日期格式不够长

------解决方案--------------------
检查你的remove_date的格式,最好
select max(len) from (select length(remove_date) len from SREMOVE)

看看最大长度是多少,应该是remove_date里面的内容不仅仅格式是'20120105',可能还有'20120105 11:24'

所以如果你用to_date(remove_date,'yyyymmdd')会报错 ora-01840 输入值对于日期格式不够长
------解决方案--------------------
查询可以正常显示?

如果是pl/SQL ,默认只显示前面几行。。。

确认下 你显示所有的记录是否有问题