注册 登录
编程论坛 SQL Server论坛

[求助]如何筛选生日

nixy 发布于 2006-12-05 11:48, 1039 次点击
如何从16位和18位身份证号码中筛选出当天过生日的网友,先谢谢各位了
8 回复
#2
angeloc2006-12-05 12:30

截取字符串和当前月日比较

#3
棉花糖ONE2006-12-05 13:12

create table #people
(name varchar(20),sfz varchar(20))
insert #people select 'a','123456198508193717'
union select 'a','1234568512053717'
union select 'b', '111111111112053124'
select * from #people where ( substring(sfz,11,4)=
substring(convert(varchar(11),getdate(),110),1,2)+substring(convert(varchar(11),getdate(),110),4,2)
and len(sfz)=18 ) or ( substring(sfz,9,4)=
substring(convert(varchar(11),getdate(),110),1,2)+substring(convert(varchar(11),getdate(),110),4,2)
and len(sfz)=16 )
结果
name sfz
-------------------- --------------------
b 111111111112053124
a 1234568512053717

(所影响的行数为 2 行)

#4
bygg2006-12-05 16:38
以下是引用nixy在2006-12-5 11:48:36的发言:
如何从16位和18位身份证号码中筛选出当天过生日的网友,先谢谢各位了

身份证号码有16位的吗?

#5
棉花糖ONE2006-12-05 16:56

有啊,以前就有16位

#6
周星2006-12-05 18:02
创建一个表 birthday
有2列 name varchar(20)
id varchar(20)

SQL语句
select * from birthday
where substring(id,11,4) = substring(convert(varchar(12),getdate(),112),5,4)

由于不知道16位身份证的格式,所以只用了18位的。自己可以在语句里面添加。

#7
nixy2006-12-05 20:40

谢谢各位热心的哥哥们

#8
_羊_2006-12-06 13:36
我也学到了  谢谢你们
#9
cetingraul2006-12-07 17:01
有点复杂
1