当前位置:数据库 > SQLServer >>

sql server 2008,一张表格中身份证号如何求现在年龄超过18岁的??18位的身份证号

答案:select * from 查询表 where DATEDIFF(year, convert(datetime , SUBSTRING (十八位身份证号,7,8)),GETDATE()) >18 注释: SUBSTRING ( 字符串,7,8)) 从字符串的第7位开始取8个字符。 SUBSTRING (十八位身份证号,7,8))即取得身份证中的年月日,如:SUBSTRING (‘220135198505061234’,7,8)), 取得的值为:19850506 DATEDIFF(year,日期1,日期2) 取得 2个日期相差的年; convert(datatime ,字符串) 把字符串转换成日期。如:convert(datetime , SUBSTRING (’220135198505061234’,7,8)) 的值为:1985-05-06 00:00:00.000 则: select DATEDIFF(year, convert(datetime , SUBSTRING (‘220135198505061234’,7,8)),GETDATE()) 的值的27.
其他:如下,只考虑了年份,未考虑月份:
 
select * from tab where year(getdate()) - cast(substring(sfzh,7,4) as int) >18 看下这个是否可以满足:
select * from 表A where 
datediff(yy,
case when len('身份证号')=18 then substring(@ID,7,8) 
--这个是15位的情况下    
--when len('身份证号')=15 then substring(@ID,7,6) 
    end 
,getdate())>18 select * from 表A where 
datediff(yy,
case when len('身份证号')=18 then substring(@ID,7,8) 
--这个是15位的情况下    
--when len('身份证号')=15 then substring(@ID,7,6) 
    end 
,getdate())>18

上一个:SQL Server 2005默认端口号
下一个:SQL Server2000数据库服务器不见了,就是说你之前反馈的问题,请问你是怎么解决的额,我也碰到这个问题了

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,