我正在编写一些调度代码,用于检查发生的事件Daily
,Weekly
, Fortnightly
和Monthly
。
到目前为止,我已经找到了Daily
,Weekly
,Monthly
但不是 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
(来自当前双周的事件),但它不会给我任何结果。
如何查询过去两周内发生的事件?
答案 0 :(得分:2)
这应该可以解决问题:
SELECT * FROM event_log WHERE date >= DATE_SUB(NOW(), INTERVAL 14 DAY)
如果确保日期列上有索引,则此查询将允许使用该索引来保持速度。