0

DailyWeeklyFortnightlyおよびが発生したイベントをチェックするスケジューリング コードを書いていますMonthly

これまでのところDailyWeekly,を行う方法を考え出しました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 日) で、最後のイベントが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 (現在の隔週のイベント)しかし、結果は得られません。

過去 2 週間以内に発生したイベントを照会するにはどうすればよいですか?

4

1 に答える 1

2

これでうまくいくはずです:

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

日付列にインデックスがあることを確認すると、このクエリにより、そのインデックスを使用して物事を高速に保つこともできます。

于 2012-11-01T00:06:25.803 に答える