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

Posted

tags:

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

参考技术A

在做资料的时候需要身份证号码来计算出年龄,虽然通过身份证号码计算年龄很简单,但是数据太多一个一个计算比较麻烦,那么可以用excel公式通过身份证号码计算出年龄,下面就来了解一下。

1、首先在电脑中打开一个EXCEL文档。在表格内输入身份证号码,这里模拟输入了一串号码表示身份证号。

2、接着用函数MID取出身份证号码中的出生日期。

3、然后用函数YEAR(NOW())求出现在的年份。

4、这时用现在年份减去出生年份得出年龄,也可以直接把两个公式合并到一起,合并后公式为=YEAR(NOW())-MID(A3,7,4)。

5、这时单元格内根据身份证号码计算出年龄。

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

在SQL里,我有一个表叫养老表,里面有这几列
姓名 居民身份号码 离退休日期
李四 有15位的 1998-09-08
………… 有18位的 …………
………… 有末尾是X的 ………………
大概就是这,请问如何利用sql语句查询出生日期,并且计算出他们退休时的年龄,关键是各样的身份证都有,头都大了!

select 序号,姓名,身份证号,
case LEN(身份证号)
when 15 then convert(date, SUBSTRING(身份证号, 7, 6), 12) /*15位身份证号: 7-12位为yymmdd */
when 18 then convert(date, SUBSTRING(身份证号, 7, 8), 112) /*18位身份证号: 7-14位为yyyymmdd */
else NULL
end as 出生日期,
case LEN(身份证号)
/*身份证号出生日期后3位, 如果为奇数则性别为男, 55岁退休; 如果为偶数则为女, 50岁退休*/
when 15 then dateadd(year, case convert(int, SUBSTRING(身份证号,15,1))%2 when 1 then 55 else 50 end, convert(date, SUBSTRING(身份证号, 7, 6), 12) )
when 18 then dateadd(year, case convert(int, SUBSTRING(身份证号,17,1))%2 when 1 then 55 else 50 end, convert(date, SUBSTRING(身份证号, 7, 8), 112) )
else NULL
end as 退休日期
from 养老表
参考技术A 身份证只有15和18位的区分
按照你的要求做了一下简单的表
CREATE TABLE TEST_TAB
(
NAME VARCHAR2(60),
IDENTIFID VARCHAR2(30),
LEAVEDATE DATE
)

select a.NAME,
round((a.LEAVEDATE - to_date(substr(a.IDENTIFID,7,8),'yyyy/mm/dd'))/365)||'歳' ||
round(mod(((a.LEAVEDATE - to_date(substr(a.IDENTIFID,7,8),'yyyy/mm/dd'))/365),1)*12)||'月' ||
round(mod(mod(((a.LEAVEDATE - to_date(substr(a.IDENTIFID,7,8),'yyyy/mm/dd'))/365),1)*12,1)*10) ||'天' from
(
select NAME ,IDENTIFID , LEAVEDATE
from TEST_TAB
where length(IDENTIFID)=18
) a
union all
select a.NAME,
round((a.LEAVEDATE - to_date(concat('19',substr(a.IDENTIFID,7,6)),'yyyy/mm/dd'))/365)||'歳' ||
round(mod(((a.LEAVEDATE - to_date(concat('19',substr(a.IDENTIFID,7,6)),'yyyy/mm/dd'))/365),1)*12)||'月' ||
round(mod(mod(((a.LEAVEDATE - to_date(concat('19',substr(a.IDENTIFID,7,6)),'yyyy/mm/dd'))/365),1)*12,1)*10) ||'天' from
(
select NAME ,IDENTIFID , LEAVEDATE
from TEST_TAB
where length(IDENTIFID)=15
) a

因为没有考虑到性能问题。估计还得改善
参考技术B 和末尾没关系吧,最多判断下15位和18位

SELECT case when length(column)=18 then substring(column,7,8)
when length(column)=15 then concat('19',substring(column,7,6))
else '身份证号码不规范'
end
FROM TABLE

其中column是身份证号码字段 TABLE 是表名

算出出生年月,算退休就是加55年还是50年吧。这个加法太简单就不写了

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

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

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

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

sql中根据身份证号来计算年龄

身份证号码出来年龄函数

excel 中把身份证号转换成年龄和出生日期的公式是啥?