0

我的应用程序中有一个存储用户详细信息的表。在这些字段中,用户正在保存他们的警报设置。即,我们将提醒用户他们保存的日期。

我的桌子看起来像

id   |    Username     |   name    |    alert_date            |     repeat_on
--------------------------------------------------------------------------------
12   |    user_name    |   name    |  2013-08-12 00:00:00     |     30
15   |    user_nam2    |   name    |  2013-05-12 00:00:00     |     45
--------------------------------------------------------------------------------

通过 cronjob,我们向用户发送提醒电子邮件和 SMS。喜欢

select * from users where date(alert_date)=CURRENT_DATE

它工作正常,但可以选择根据“repeat_on”天数重复警报。就像我们必须从 alert_date 开始每隔 '30' 天(或其他任何时间)重复警报。我被困在这里的查询。

这是执行相同操作的表的正确结构吗?

4

1 回答 1

1

尝试:

SELECT * FROM users 
WHERE alert_date <= CURRENT_DATE AND DATE_ADD(alert_date, INTERVAL repeat_on DAY) >= CURRENT_DATE
于 2013-04-12T03:59:14.307 回答