身份证分为18位和15位,对应的日期格式分别为
18位身份证:7-13位yyyyMMdd,
15位身份证:7-11位yyMMdd。
今天由于个人的失误,得到一个深刻的教训,刻苦铭心,以后绝不再犯。
深刻反思(update,delete 一定不要忘了加where):
虽然本地数据库有备份的话可以回滚,不过以防万一,本地测试数据库一般,不会保存那么勤,多个人同时用,你会滚难免会出现异常,特别是对于一个实习生,还是谨慎为好,自己写了几个表测试之后,就对数据库进行修复工作了。。。自己的错还要自己来啊。
大致sql代码如下:
--对18位身份证日期进行修改,大范围修改,2月29日的可能有错,需要下面的查询语句人工检查
update kp_user_info
set birthday=
case when substring(idCard,7,4)<'1753'
then null
when SUBSTRING(idCard,11,2)='00' or SUBSTRING(idCard,11,2)>'12'
then null
when SUBSTRING