0

我正在编写一些调度代码来检查发生的事件DailyWeekly和。FortnightlyMonthly

到目前为止,我已经弄清楚了如何做Daily,但不是。我的表结构是...WeeklyMonthlyFortnightly

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 日),最后一个事件发生在13 天前10-20-2012(2012 年 10 月 20 日),如果我要查询该事件,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 (当前双周的事件)但它没有给我任何结果。

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

4

1 回答 1

2

这应该可以解决问题:

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

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

于 2012-11-01T00:06:25.803 回答