Mysql查询过去14天内的事件(每两周一次)

时间:2012-11-01 00:00:19

标签: mysql scheduling

我正在编写一些调度代码,用于检查发生的事件DailyWeekly Fortnightly Monthly

到目前为止,我已经找到了DailyWeeklyMonthly但不是 Fortnightly 的方法。 我的表结构是......

CREATE TABLE IF NOT EXISTS `event_log` (
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    `export_schedule` int(11) NOT NULL,
    `import_schedule` int(11) NOT NULL,
    `exception` TEXT NULL,
    PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;

资源

例如,当前日期为11-1-2012(11月1日),最后一次事件发生在10-20-2012(2012年10月20日) 13天前如果我是查询该事件,MySQL将返回MySQL returned an empty result set (i.e. zero rows). (Query took 0.0004 sec)。用我当前的查询。

SELECT * FROM event_log WHERE MOD(DATEDIFF(date,CURDATE()),14)=0 (来自当前双周的事件),但它不会给我任何结果。

如何查询过去两周内发生的事件?

1 个答案:

答案 0 :(得分:2)

这应该可以解决问题:

SELECT * FROM event_log WHERE date >= DATE_SUB(NOW(), INTERVAL 14 DAY)

如果确保日期列上有索引,则此查询将允许使用该索引来保持速度。