你好我在表中有两列:duration(int)和dateCol(date)。 如果我想知道什么时候CURDATE() - dateCol将等于持续时间,我该怎么办呢。
即:CURDATE() - dateCol(2010-05-08)=持续时间(14天),然后发送电子邮件?
答案 0 :(得分:3)
DATE_SUB(CURDATE(), INTERVAL 14 DAY) = datecol
答案 1 :(得分:2)
要做你想做的事,你可以使用DATEDIFF
:
DATEDIFF(NOW(), last_email_date) >= 14
另一种方法是间隔减法:
CURDATE() - interval 14 day >= last_email_date
如果有合适的索引,第二个可以更快。
请注意,我选择使用不等式测试而不是相等,因为如果您的流程离线一天并且第二天重新启动,这将处理错过的电子邮件。您应该在处理行时将该行标记为已处理,以防止发送多封电子邮件。如果您的进程每天运行多次,这也会阻止发送多封电子邮件(如果您重新启动它以进行升级/错误修复,可能会发生这种情况。)