SQL语句有点小小问题

来源:百度知道 编辑:UC知道 时间:2024/06/23 23:17:22
select * From users where (DATEDIFF(DAY,getdate(),Birth)<5 and DATEDIFF(DAY,getdate(),Birth)>-1)
上面的是我的sql语句,我的目的是检索未来5天生日的同学,Birth是我的生日字段,发生了一个意外:例如两个生日1968-12-20和2008-12-20的人,本来都应该显示,可是只有本年度的2008-12-20的人信息能显示,而另外一个不能显示.请问是我的SQL语句有错吗?怎样改正啊?

简单说几天内过生日的记录,比较的是月年日并要考虑跨年跨月的情况我写过一个过程这不是一个小问题,你得加分了

找出连续几天内过生日的人(MSSqlServer)

create table userinfo
(
Id int,
NickName nvarchar(15),
Age int,
Sex bit,
QQ nvarchar(15),
Birthday datetime,
Email nvarchar(15),
MobilePhone nvarchar(15),
Address nvarchar(15),
HomeTown nvarchar(15)
)

go

CREATE PROC PRO_BIRTHDAY
@DAYCOUNT INT --语句中包含的天数这是一个带参数的存储存过程
AS
DECLARE @CONDITION VARCHAR(1000)--用来拼接where后的条件
DECLARE @I INT--用来控制循环次的的变量
DECLARE @STRSQL VARCHAR(5000)--最后用来执行查询的语句
SET @STRSQL='SELECT * FROM USERINFO WHERE '--查询语句的开始部分

SET @CONDITION=+' CONVERT(VARCHAR(5),BIRTHDAY,110)='+CHAR(39)+ CONVERT(VARCHAR(5),GETDATE(),110) +CHAR(39) --当参数就于等于1时只拼接一天
SET @I=1
WHILE @I<@DAYCOUNT--这里循环只执行一参数减1那么多次因为这里用的是<号
BEGIN
SET @CONDITION=@CONDITION +' OR CONVERT(VARCHAR(5),BIRTHDAY,110)='+