sql中根据身份证号来计算年龄
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql中根据身份证号来计算年龄相关的知识,希望对你有一定的参考价值。
update a set a.age=(year(getdate())-cast(select substring(b.sfzh,7,4) from person b where b.sfzh=a.sfzh) as int)) from person a 这么写会提示子查询返回的值不止一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,或子查询用作表达式时,这种情况是不允许的。如果把 set后面 a.age "a."去掉则会提示 无法绑定由多个部分组成的标识符 郁闷!!
update person set age= year(getdate())-substring(sfzh,7,4)这个命令有一点小错误。因为year() 结果是数值型。subs()结果是字符型。
改为:
update person set age= year(getdate())-val(substring(sfzh,7,4)) 参考技术A update person set age= year(getdate())-substring(sfzh,7,4)
这样就可以了,为什么要用子查询? 参考技术B update person
set age= cast(substring(sfzh,7,4) as int) 参考技术C SELECT TIMESTAMPDIFF(YEAR, SUBSTRING('身份证号', 7, 8), NOW()) AS age;
根据身份证号精确到天计算年龄
excel 中把身份证号转换成年龄和出生日期的公式是啥?
在做资料的时候需要身份证号码来计算出年龄,虽然通过身份证号码计算年龄很简单,但是数据太多一个一个计算比较麻烦,那么可以用excel公式通过身份证号码计算出年龄,下面就来了解一下。
1、首先在电脑中打开一个EXCEL文档。在表格内输入身份证号码,这里模拟输入了一串号码表示身份证号。
2、接着用函数MID取出身份证号码中的出生日期。
3、然后用函数YEAR(NOW())求出现在的年份。
4、这时用现在年份减去出生年份得出年龄,也可以直接把两个公式合并到一起,合并后公式为=YEAR(NOW())-MID(A3,7,4)。
5、这时单元格内根据身份证号码计算出年龄。
参考技术A方法:
假设身份证号在a1单元格
生日:
=IF(LEN(A1)=15,"19"&MID(A1,7,2)&"-"&MID(A1,9,2)&"-"&MID(A1,11,2),MID(A1,7,4)&"-"&MID(A1,11,2)&"-"&MID(A1,13,2))
年龄:
=DATEDIF(TEXT(TEXT(MID(A1,7,6+(LEN(A1)=18)*2),"#-00-00"),"e-mm-dd"),TODAY(),"y")
1.用excel提取身份证出生日期
2.首先选定c列,右键设置单元格格式
3.把该列设置为日期格式
4.在C2单元格输入提取身份证出生日期公式
=--TEXT(MID(B2,7,8),"0-00-00")
公式解释:MID(B2,7,8)的意思是提取从B2单元第7位开始往后的8位数字,即19871209,TEXT函数前的两个减号,负负为正的意思,被称为减负运算。
然后用TEXT函数把数据转换成1987-12-09
5.然后,在下拉提取其他身份证出生日期
=IF(LEN(B2)=15,IF(MOD(VALUE(RIGHT(B2,3)),2)=0,"女","男"),IF(LEN(B2)=18,IF(MOD(VALUE(MID(B2,15,3)),2)=0,"女","男"),"身份证错"))
2、根据身份证号码求出生年月:
=IF(LEN(B2)=15,CONCATENATE("19",MID(B2,7,2),".",MID(B2,9,2)),IF(LEN(B2)=18,CONCATENATE(MID(B2,7,4),".",MID(B2,11,2)),"身份证错"))
3、根据身份证号码求年龄:
=IF(LEN(B2)=15,year(now())-1900-VALUE(MID(B2,7,2)),if(LEN(B2)=18,year(now())-VALUE(MID(B2,7,4)),"身份证错"))
以上是关于sql中根据身份证号来计算年龄的主要内容,如果未能解决你的问题,请参考以下文章