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

Posted

tags:

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

这是在一个表中,我想输入ID(身份证号)后,后面的列明birth(出生日期),AGE(年龄)会直接计算结果,语句该怎么写,写在哪个地方,是写在默认值那么?

select SUBSTRING (id, 7, 4) + '-' + SUBSTRING (id, 11, 2) + '-' + SUBSTRING (id, 13, 2) from ‘员工信息表’

参考技术A select datediff(day,convert(datetime,SUBSTRING (ID, 7, 4) + '-' + SUBSTRING (ID, 11, 2) + '-' + SUBSTRING (ID, 13, 2)) ,getdate())/360 from 员工信息表追问

这句话要加在哪里?

参考技术B 给字段加上GENERATED选项, GENERATED as (SUBSTRING (id, 11, 2))追问

怎么加,加在哪个地方?
加在默认值那?
本人初学者,不太会

追答

建表或修改表时,加在字段类型后面

追问

这个地方不能加这个啊

追答

你用的什么数据库?
有些数据库支持这个功能,有些数据库不支持

追问

SQL2005

参考技术C 这个需要用触发器,你稍等,我写一个追问

不能在列属性中直接设计么

追答--创建表
create table [员工信息表] 
(name varchar(10)
,sex char(4)
,id varchar(18)
,birth datetime
,age char(2))

--创建触发器
CREATE TRIGGER tgr_员工信息表_1 ON [员工信息表]
for Insert, Update
AS
BEGIN
 declare @birth datetime,@id varchar(18);
 select @id=id,@birth=convert(datetime,substring(id,7,8)) from inserted;
 update [员工信息表]
 set birth=@birth,
   age=convert(varchar,datediff(year,@birth,getdate()))
 where id=@id;
END
 
--插入数据
insert into [员工信息表] (name,sex,id) values ('张三','男','xxxxxx19800101xxxx');

结果如下:

 

SQL Server里只能通过触发器,不能通过设置列属性的方式实现。

本回答被提问者采纳

以上是关于SQL由身份证号计算出生日期和年龄的主要内容,如果未能解决你的问题,请参考以下文章

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

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

sql从身份证中取出出生日期

sql中,根据身份证号码截取出了出生日期,怎么获取当前年龄,精确到月、日?

oracle 关于年龄计算问题?

EXCEL表格中 怎么用函数从身份证号获取出生日期,年龄、性别