答案: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数据库服务器不见了,就是说你之前反馈的问题,请问你是怎么解决的额,我也碰到这个问题了