帮助MySQL日期操作

时间:2010-05-22 18:54:14

标签: php mysql

你好我在表中有两列:duration(int)和dateCol(date)。 如果我想知道什么时候CURDATE() - dateCol将等于持续时间,我该怎么办呢。

:CURDATE() - dateCol(2010-05-08)=持续时间(14天),然后发送电子邮件?

2 个答案:

答案 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

如果有合适的索引,第二个可以更快。

请注意,我选择使用不等式测试而不是相等,因为如果您的流程离线一天并且第二天重新启动,这将处理错过的电子邮件。您应该在处理行时将该行标记为已处理,以防止发送多封电子邮件。如果您的进程每天运行多次,这也会阻止发送多封电子邮件(如果您重新启动它以进行升级/错误修复,可能会发生这种情况。)