我有一个查询,该查询应该从一个表中获取数值(天数),将该值添加到当前日期,然后将该日期与另一个表中的日期行进行比较,并返回每个用户 ID 和匹配的事件 ID。 (本质上,人们设置提醒在某个事件发生前 X 天发出,我们正在尝试运行查询来查看每天需要在 cronjob 中发出哪些提醒。希望这是有道理的。)
不幸的是,我知道我只是错过了一些东西。一方面,查询返回双倍的结果集,并且显然是错误的结果(它正在拉取一天后的事件)。我绝对已经掌握了这方面的知识,并且可以从更了解的人那里得到一些帮助。
- Users_Notifications.Alert 是提醒用户的事件发生前的天数
Events_Root.EventDate 是事件发生的日期。
SELECT * FROM `Users_Notifications`, `Events_Root` WHERE DATE( DATE_ADD( NOW(), INTERVAL Users_Notifications.Alert DAY ) ) = DATE( Events_Root.EventDate );
表定义如下:
- Users_Notifications:ID、User_ID、Event_ID、警报
- Events_Root:ID、名称、事件日期
最佳答案
NOW() 函数使用本地时区。确保您的服务器上的时区正确。
关于php - MYSQL 基于 future 的日期进行选择,产生重复的、不可预测的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20939104/