我有一个两列生日和周年纪念表。我想在7天的时间内收到关于生日和周年纪念的提醒,但不应该包括年份(显然如果我包括年份,它总是会比当前日期更少)。我想提前7天得到警报。比较日期和月在SQL服务器的警报系统
也就是说,查询应该比较生日和周年纪念日与当前日期,并返回一个列表,如果他们的生日或周年纪念日在同一个月的7天之内,以便它提前通知我即将到来的生日和周年纪念日。
我有一个两列生日和周年纪念表。我想在7天的时间内收到关于生日和周年纪念的提醒,但不应该包括年份(显然如果我包括年份,它总是会比当前日期更少)。我想提前7天得到警报。比较日期和月在SQL服务器的警报系统
也就是说,查询应该比较生日和周年纪念日与当前日期,并返回一个列表,如果他们的生日或周年纪念日在同一个月的7天之内,以便它提前通知我即将到来的生日和周年纪念日。
从现在减去一年差要求的日期,然后用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
谢谢大家的回复......您的代码在很大程度上有所帮助,但是您的代码会过滤掉任何生日或周年纪念在同一个月。虽然,我只想过滤出生日或周年纪念在当前日期后7天内的记录,以便我可以事先了解即将到来的生日和周年纪念。请记住,我只需要为即将到来的生日或周年纪念提醒。 – Dipojjal
我会看到同一个月有什么问题。你可以更具体的休息吗?也许一些样本数据会有所帮助。 –
我明白你的意思了。问题是,负值小于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)
您是否构建过任何查询..? – NREZ
这里是我使用的查询: select * from customer where(MONTH(Anniversary)= MONTH(getdate()))OR(MONTH(Birthday)= MONTH(getdate())) – Dipojjal
我想更具体一些日期...... 我希望日期在当前日期的一周内(7天) – Dipojjal