我有一张桌子,有两列生日和周年纪念日。我想在 7 天的时间段内收到有关生日和纪念日的警报,但这不应该包括年份(显然,如果我包括年份,它总是小于当前日期)。我想提前 7 天收到警报。
也就是说,查询应该将生日和周年纪念日与当前日期进行比较,如果他们的生日或周年纪念日在同一个月的 7 天之间,则返回一个列表,以便提前提醒我即将到来的生日和纪念日。
我有一张桌子,有两列生日和周年纪念日。我想在 7 天的时间段内收到有关生日和纪念日的警报,但这不应该包括年份(显然,如果我包括年份,它总是小于当前日期)。我想提前 7 天收到警报。
也就是说,查询应该将生日和周年纪念日与当前日期进行比较,如果他们的生日或周年纪念日在同一个月的 7 天之间,则返回一个列表,以便提前提醒我即将到来的生日和纪念日。
试试这个
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)
减去从现在到请求日期的年份差异,然后使用 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