sql - 比较 sql server 中的日期和月份以获取警报系统

标签 sql sql-server database

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

也就是说,查询应该将生日和周年纪念日与当前日期进行比较,如果他们的生日或周年纪念日在同月的 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

关于sql - 比较 sql server 中的日期和月份以获取警报系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18396237/

相关文章:

sql-server - 批量插入最大错误

javascript - sails.js 在创建之前修改模型

sql - SAS中的排序执行失败

mysql - 需要写MySQL case语句

sql server 2008 按问题排序

sql - 从 TSQL 查询扩展事件

sql-server - 多个表上的 SQL 2008 全文搜索目录

php - 通过我的代码创建/更新/删除还是在数据库中手动操作?

python - SQLite3 列不是唯一的

sql - 从重复记录中为每个唯一 ID 选择一行