【发布时间】:2013-08-28 19:51:36
【问题描述】:
我有以下两张表
# Event table
id title start_date end_date
----------------------------------------------------------
1 Foo 2013-05-06 20:30:00 2013-05-06 22:45:00
2 Bar 2013-06-03 07:40:00 2013-05-06 10:45:00
3 Demo 2013-05-02 00:22:00 2013-05-06 03:45:00
4 Test 2013-07-09 10:56:00 2013-05-06 13:45:00
# Notification table
id event_id mail time type sent
----------------------------------------------------------
1 1 123@example.com 15 minute 0
2 1 234@example.com 01 day 0
3 3 655@example.com 01 week 0
4 4 888@example.com 40 minute 0
5 4 999@example.com 42 minute 1
5 4 987@example.com 30 minute 0
cron 作业每分钟执行一个 PHP 脚本,以检查是否应将通知发送到通知表中的电子邮件地址。时间值是应该发送提醒的事件开始日期之前的相对时间。
例如,当 cron 作业在 2013-05-06 20:15:00 运行时,应向电子邮件地址 123@example.com 发送一封电子邮件。还应考虑发送标志。如果将其设置为 0,则所有通知也应在低于发送日期的情况下发送。例如,当 cron 作业在 2013-07-09 10:26:00 运行时,应将邮件发送到 987@example.com 和 888@example .com.
我的问题是,查询在 mysql 中的外观如何才能获取通知以满足实际 (now()) 日期的上述要求?我尝试使用date_sub,但并没有真正成功。非常感谢您的帮助。
【问题讨论】:
-
很难说,但却是事实。在通知表中保留类型是一种丑陋的数据库设计
-
什么是更好的方法?你的评论真的没有帮助!!
-
将所有类型保存在一个查找表中,并将其引用保存在通知表中,可以加快余额时间的动态计算