SQL用身份证号计算年龄命令

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL用身份证号计算年龄命令相关的知识,希望对你有一定的参考价值。

比如身份证号码或者出生日期在A1单元格,可以在B1输入以下公式:
(如果是其他单元格,相应改一下就行)
问题1:
=DATEDIF(TEXT(MID(A1,7,6+(LEN(A1)=18)*2),(LEN(A1)=15)*19&"0-00-00"),TODAY(),"y")
问题2:
=CHOOSE(MOD(MID(A1,15+(LEN(A1)=18)*2,1),2)+1,"女","男")
问题3:
=DATEDIF(TEXT(A1,"0-00-00"),TODAY(),"y")
参考技术A update
person
set
age=
year(getdate())-substring(sfzh,7,4)
这个命令有一点小错误。因为year()
结果是数值型。subs()结果是字符型。
改为:
update
person
set
age=
year(getdate())-val(substring(sfzh,7,4))

oracle 关于年龄计算问题?

根据 出生日期 和 当前日期 去计算一个人的年龄时,要求变成
下面的样子 SQL 应该怎么处理

当前日期 出生日期 岁数 月数 天数

2014-9-3 8:53 1978-12-16 35 8 18

2014-9-4 15:15 2014-9-4 0 0 1

参考技术A 用month_between做,应该会好一些。
select
当前日期,
出生日期,
trunc(months_between(当前日期,出生日期)/12) 年数,
trunc(months_between(当前日期,出生日期))%12 月数,
ceil(当前日期-add_month(出生日期,trunc(months_between(当前日期,出生日期))) 天数 from table
可能一些细微的地方还需要些调整,不过大体上应该差不多了。
最后那个ceil可能要分成两个case when的部分是
case when substr(to_char(当前日期,'yyyy-mm-dd'),-5) != substr(to_char(出生日期,'yyyy-mm-dd'),-5) then trunc(当前日期-add_month(出生日期,trunc(months_between(当前日期,出生日期)))
when substr(to_char(当前日期,'yyyy-mm-dd'),-5) = substr(to_char(出生日期,'yyyy-mm-dd'),-5) then 1 end 天数
我看了下你上面的两个例子,好像因为日期相等比较特殊,所以我尝试用ceil试试,如果不行那么就用下面这个,我估计差不多了,不过我可没有环境,只能是凭空想象,剩下的只能你自己去实验和修改了。
参考技术B Select sysdate 当前日期,
dob 出生日期,
trunc(months_between(Sysdate, dob) / 12) 年,
trunc(Mod(months_between(Sysdate, dob), 12)) 月,
trunc(Sysdate -
add_months(dob,
trunc(months_between(Sysdate, dob) / 12) * 12 +
trunc(Mod(months_between(Sysdate, dob), 12)))) 日
From (Select csrq dob from table);
参考技术C 计算人的周岁月份到了,但还差2天算不算到几周岁了

以上是关于SQL用身份证号计算年龄命令的主要内容,如果未能解决你的问题,请参考以下文章

SQL由身份证号计算出生日期和年龄

怎么通过身份证号计算年龄

excel怎么用身份证号算员工精确到天数的年龄

如何在数据库中利用sql从18位身份证号中截取出生日期,身份证号在reader表中

各位兄弟都来,如何在sql里利用身份证查询出生日期?

如何用身份证计算出年龄?