我想从人员信息表中,根据身份证号提取人员的出生日期。可是在更新记录的时候,总是出错:
ora-01861 文字与格式字符串不匹配。请大虾们赐教。注:我的数据表中出生日期字段是字符型,跟这个有关系吗?我的sql如下:针对新身份证号:
select shenfenzheng,substr(shenfenzheng,7,8),chushengrq
from renyuan where lengthb(shenfenzheng)=18用select查看数据,都没有问题可是执行更新就出错了:
update renyuan set chushengrq=to_date(substr(shenfenzheng,7,8),'YYYY-MM-DD') where lengthb(shenfenzheng)=18
ora-01861 文字与格式字符串不匹配。请大虾们赐教。注:我的数据表中出生日期字段是字符型,跟这个有关系吗?我的sql如下:针对新身份证号:
select shenfenzheng,substr(shenfenzheng,7,8),chushengrq
from renyuan where lengthb(shenfenzheng)=18用select查看数据,都没有问题可是执行更新就出错了:
update renyuan set chushengrq=to_date(substr(shenfenzheng,7,8),'YYYY-MM-DD') where lengthb(shenfenzheng)=18
set chushengrq=to_char(to_date(substr(shenfenzheng,7,8),'YYYY-MM-DD'),'yyyy-mm-dd')
where lengthb(shenfenzheng)=18我这样写也是同样的错误啊。
从shengfenzheng取出来的只有八个字符的长度,而你的格式字符串却有10个字符,当然不匹配了。'YYYY-MM-DD ====〉'YYYYMMDD'
set chushengrq = substr(shenfenzheng,7,8)
select shenfenzheng,substr(shenfenzheng,7,8),chushengrq,
to_char(to_date(substr(shenfenzheng,7,8),'YYYY-MM-DD'),'yyyy-mm-dd')
from renyuan where lengthb(shenfenzheng)=181 110107194909272723 19490927 1949-09-27 1949-09-27
2 110107194610142713 19461014 1946-10-14 1946-10-14
3 110107194507262717 19450726 1945-07-26 1945-07-26
这是我select取出来的数据应该可以看到To_char转换成功了啊。
所以应该不存在你说的这种情况。
不过我按照你说的试了一下,发现错误变了,我现在怀疑是数据不规范的问题。只是几万条数据,不好找啊。
谢谢了先,还有什么好办法吗?
说明这个转换没有错啊。