Oracle出生日期根据身份证号更新

需求:有个personinfo表

字段 :生日BIRTHDAY date类型

字段:身份证号 CARD         VARCHAR2(30)

把数据库中生日全部根据身份证号截取的日期更新

//18位

UPDATE PERSONINFO k SET k.CARD='410725199301021256' 

//15位
UPDATE PERSONINFO k SET k.CARD='421022881006452'


sql语句:

//18位

UPDATE PERSONINFO t SET t.BIRTHDAY="TO_DATE"(("SUBSTR"(t.CARD, 7, 8)), 'yyyy-MM-dd') WHERE t.id IN ( SELECT k.id FROM PERSONINFO k  WHERE "LENGTH"(k.CARD)=18)


//15位

UPDATE PERSONINFO t SET t.BIRTHDAY="TO_DATE"((CONCAT(19,"SUBSTR"(t.CARD, 7, 6))), 'yyyy-MM-dd') WHERE t.id IN ( SELECT k.id FROM PERSONINFO k  WHERE "LENGTH"(k.CARD)=15)



扩展知识:(18位)

号码的结构和表示形式


  1.号码的结构
  公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成。排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。
  2.地址码
  表示编码对象常住户口所在县(市、旗、区)的行政区划代码,按GB/T2260的规定执行。
  3.出生日期码
  表示编码对象出生的年、月、日,按GB/T7408的规定执行,年、月、日代码之间不用分隔符。
  4.顺序码
  表示在同一地址码所标识的区域范围内,对同年、同月、同日出生的人编定的顺序号,顺序码的奇数分配给男性,偶数分配给女性。
  5.校验码
  根据前面十七位数字码,按照ISO 7064:1983.MOD 11-2校验码计算出来的检验码。

地址码

(身份证号码前六位)表示编码对象常住户口所在县(市、镇、区)的行政区划代码。
北京市|110000,天津市|120000,河北省|130000,山西省|140000,内蒙古自治区|150000,辽宁省|210000,吉林省|220000,黑龙江省|230000,上海市|310000,江苏省|320000,浙江省|330000,安徽省|340000,福建省|350000,江西省|360000,山东省|370000,河南省|410000,湖北省|420000,湖南省|430000,广东省|440000,广西壮族自治区|450000,海南省|460000,重庆市|500000,四川省|510000,贵州省|520000,云南省|530000,西藏自治区|540000,陕西省|610000,甘肃省|620000,青海省|630000,宁夏回族自治区|640000,新疆维吾尔自治区|650000,台湾省(886)|710000,香港特别行政区(852)|810000,澳门特别行政区(853)|820000
大陆居民身份证号码中的地址码的数字编码规则为:
  第一位数字表示地区,1是华北,2 是东北,3是华东,4是中南,5是西南,6是西北。
  第二位数字表示户籍地所在的直辖市、省、自治区在该地区中的排位,比如在华北地区,1代表北京市,2代表天津市,3代表河北省,4代表山西省,5代表内蒙古自治区。
  第三、四位数字在户籍所在地是省、自治区的身份证号码中表示所在地的地区或地区级市(省辖市)、盟,在户籍地是直辖市的身份证号码中表示所在地的归属,01是城市,02是农村。
第五、六位数字则表示户籍所在地的区、县、县级市、旗。


15位的身份证号码: 

(1)1~6位为地区代码 

(2)7~8位为出生年份(2位),9~10位为出生月份,11~12位为出生日期 

(3)第13~15位为顺序号,并能够判断性别,奇数为男,偶数为女。


  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值