❶ sql由身份证号计算出生日期和年龄
select datediff(day,convert(datetime,SUBSTRING (ID, 7, 4) + '-' + SUBSTRING (ID, 11, 2) + '-' + SUBSTRING (ID, 13, 2)) ,getdate())/360 from 员工信息表
❷ SQL 中身份证编码与出生日期验证
根据身份证号验证出生日期:
alter table 你的表--修改表
/*添加约束 要么删掉你之前的生日约束 要么把
约束开始到结束复制到你的约束里再改*/
add constraint CK_生日 check(
--约束开始
convert(datetime,replace(stuff(stuff(right (left(char之类类型的18位的身份证号,14),8),5,0,'-'),8,0,'-'),'0',''))=生日字段
--约束结束
)
最后只要把中文替换掉就可以了
❸ 各位兄弟都来,如何在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 养老表
❹ sql 从身份证中自动获取出生日期,显示格式为XXXX-XX-XX
以oracle为例,通过substr()方法截取
年月日
,即可源档。
代码如下:
declare
cardid
varchar(20);
birth
varchar(20);
begin
/*给cardid赋值一个18位身份证做好号码*/纯裂铅
birth
:=
substr(cardid,7,4)
||
'-'
||
substr(cardid,11,2)
||
'-'
||
substr(cardid,13,2);
dbms_output.put_line(birth);
end;
❺ sql从身份证中取出出生日期
以oracle为例:假设你的tb_csm_indivial表里面CERTIFICATE_CODE字段存着身份证号:
select
to_date(substr(CERTIFICATE_CODE,7,8),'%yyyy%mm%dd')
from
tb_csm_indivial
where
CERTIFICATE_CODE='210102197908223722'
;这样就查出来了这个身份证号的出生日期;
下面的脚本就是计算当前日期减去出生日期求出来的生日
select
EXTRACT(year
FROM
to_date('2018-11-22','yyyy-mm-dd'))
-
EXTRACT(year
FROM
to_date(substr(CERTIFICATE_CODE,7,8),'yyyy-mm-dd'))
years
from
tb_csm_indivial
where
CERTIFICATE_CODE='210102197908223722';
至于剩下的年龄区间楼主自己应该知道怎么求了把
❻ 如何在数据库中利用sql从18位身份证号中截取出生日期,身份证号在reader表中
sqlserver:
select substring(身份证号,7,8) from reader
oracle:
select substr(身份证号,7,8) from reader
❼ SQL 利用身份证提取生日月
when substring(HY_JBDA.证件号码,11,2) ='01' then '1月'
❽ 用sql语句怎么提取身份证号码中的生日信息
sellect * from 表 where 身份证号 >='223154198802150000' and 身份证号<='224999154198802159999'