1

我有一张桌子,有两列生日和周年纪念日。我想在 7 天的时间段内收到有关生日和纪念日的警报,但这不应该包括年份(显然,如果我包括年份,它总是小于当前日期)。我想提前 7 天收到警报。

也就是说,查询应该将生日和周年纪念日与当前日期进行比较,如果他们的生日或周年纪念日在同一个月的 7 天之间,则返回一个列表,以便提前提醒我即将到来的生日和纪念日。

4

2 回答 2

1

试试这个

  SELECT Name,max(Table .birthdate) 
    FROM  Table group by Table .Name having (datediff(day,max(birthdate),getutcdate())>7 and datediff(day,max(birthdate),getutcdate())<8)
于 2013-08-23T06:39:38.227 回答
1

减去从现在到请求日期的年份差异,然后使用 datediff 计算结果与请求日期的日期差异。

SELECT *
FROM   Table
WHERE  DATEDIFF(dd,DATEADD(yyyy,-DATEDIFF(yyyy,Birthday,GETDATE()),GETDATE()),Birthday) BETWEEN 0 AND 7
       OR DATEDIFF(dd,DATEADD(yyyy,-DATEDIFF(yyyy,Anniversary,GETDATE()),GETDATE()),Anniversary) BETWEEN 0 AND 7
于 2013-08-23T06:42:55.183 回答