我有一个用户警报表,我们必须在用户定义的时间间隔内向用户发送警报,例如 0(仅一次)、3 个月、6 个月、1 年
所以我设计了一张这样的桌子
id | user_id | alert_date | repeat_int
-----+--------------+-------------------------+-------------
12 | 747 | 2013-04-19 00:00:00 | 0
13 | 746 | 2013-03-19 00:00:00 | 1
14 | 745 | 2012-04-19 00:00:00 | 0
15 | 744 | 2013-04-19 00:00:00 | 0
16 | 743 | 2013-05-19 00:00:00 | 0
我们在“alert_date”前一天发送警报
通过以下查询,我可以获取数据
SELECT al.id,
al.user_id,
al.alert_date,
al.repeat_int AS repunit
FROM alerts AS al
WHERE DATE_ADD(alert_date,INTERVAL repeat_int MONTH)=date_add(CURRENT_DATE,INTERVAL 1 DAY)
OR date(al.alert_date)=date_add(CURRENT_DATE,INTERVAL 1 DAY)
它的工作文件,但我真正的问题是
重复只会工作一次,我们需要它重复每个间隔
IE。如果警报日期为 2012-03-14 且 repeat_int 为 0 - 只需工作一次,但如果警报日期为 2012-03-14 且 repeat_int 为 1 - 需要从 2012-03-14 起每隔 14 日工作一次
如果警报日期是 2012-03-14 并且 repeat_int 是 3 - 需要在每三个月的 14 日工作。即警报在 2012-03-14、2012-06-14、2012-09-14 等...
有什么想法/方法可以做到吗?提前致谢