oracle中的date类型字段的处理

问题描述:将excel表中的数据导入oracle数据库中时,出现问题很多的date类型字段,错误都是todate方法报出的

select  t.id  id,                       
        to_date(t.BIRTHDATE,'yyyy-mm')  BIRTHDATE         
from MEDICALCOLLEGE_ROSTER_TEMP t

错误:

1、ora-01841 年份值必须介于 -4713 和 +9999 之间, 且不为 0

解决办法:经过检查,数据中没有超过该范围的年份,考虑是在从excel导入时,插入了看不见的空格,导致错误。于是做如下处理去掉字段中开头的空格

UPDATE MEDICALCOLLEGE_ROSTER_TEMP t SET BIRTHDATE = trim(leading ' ' from t.BIRTHDATE)
2、ORA-01840:输入值对于日期格式不够长

解决办法:引起的原因是数据库中有NULL值字段,导致todate函数接受到的参数值无法进行转换,最简单的可以为NULL值部分插入约定的某个日期

update MEDICALCOLLEGE_ROSTER_TEMP t set t.BIRTHDATE='1000.01' where t.BIRTHDATE is null
对长度不符合要求的进行截取

UPDATE MEDICALCOLLEGE_ROSTER_TEMP t SET BIRTHDATE= subStr(t.BIRTHDATE, 0, 7) where length(t.BIRTHDATE) > 8;


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值