日期:2014-05-17  浏览次数:20571 次

sql2000获取最近7i的生日会员记录.语句怎么写
生日表:
id      birthday            name
1      1985-10-20       jack
2      1967-10-16       anne
3      1988-12-1         tony


birthday: datetime 类型

sql server 2000 sp4


这个语句怎么写? 能 得到最近 7天过生日的 记录?  谢谢.
7天内过生日记录应该是:
jack
anne 



我的思路是: 先把生日的 月和日 提出来. 然后提出 今年的年份.  再组成一个 新的日期.  再和 今天的日期 比较.

我是这么写的. 但是提示错误:
datediff(d,getdate(),year(getdate())-month(birthday)-day(birthday))<=7
提示我:  
year(getdate())-month(birthday)-day(birthday) 
这段代码转换DATETIME错误.

在SQL查询分析器里和ASP里 写都错的.

------解决方案--------------------
引用:
是說三樓的代碼


引用:
是說三樓的代碼


谢谢提醒,确实有跨年问题。 abs的使用可以避免0的判断。
------解决方案--------------------
abs的使用可以避免0的判断,是的,呵呵,不留意到abs.

如果是這樣,查詢未來七天也許更有實際意義
where datediff
 (d,
  cast(rtrim(year(getdate()))+'-'+rtrim(month(birthday))+'-'+rtrim(day(birthday)) as datetime),
  getdate()) between 0 and 7
------解决方案--------------------
@dnaliang 请以4楼答案为准,用abs()没错的.