我有一個名爲service_tracker
的表。該表包含6個字段,但與我的問題最相關的是cycle_start
和last_used
。目前我能夠確定以下關於service
的事情:在1個月內使用的時間(usage_count
)user
(last_used
,cycle_start
)。只要第一個查詢不是大於1個月,第一個查詢就會將1加到usage_count
。如果超過1個月,第二個查詢將清除並設置usage_count = 1
。然而,查詢工作很好,是否有可能在一年中的十二個月的基礎上執行此操作?一月四月,五月,六月等已結束並設置爲1 usage_count
已結束?更新查詢以重置表字段每個月的基礎
查詢:
UPDATE service_tracker
SET usage_count = usage_count + 1,
last_used = CURDATE()
WHERE service_tracker = 'cloudstorage' AND `user` = 'test2' AND last_used >= date_sub(CURDATE(), INTERVAL 1 month);
UPDATE service_tracker
SET usage_count = 1,
last_used = '0000-00-00',
cycle_start = CURDATE()
WHERE service_tracker = 'cloudstorage' AND `user` = 'test2' AND cycle_start < date_sub(CURDATE(), interval 1 month);
表模式
CREATE TABLE IF NOT EXISTS `service_tracker` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`service` varchar(50) NOT NULL,
`cycle_start` date NOT NULL,
`user` varchar(200) NOT NULL,
`usage_count` int(6) NOT NULL,
`last_used` date NOT NULL,
PRIMARY KEY (`id`)
);
INSERT INTO `service_tracker` (`id`, `service`, `cycle_start`, `user`, `usage_count`, `last_used`) VALUES
(1, 'webserver', '2015-04-24', 'test1', 13, '2015-04-24'),
(2, 'cloudstorage', '2015-04-16', 'test2', 390, '2015-04-30'),
(3, 'web-traffic-tracker', '2015-04-16', 'test3', 1916, '2015-04-30'),
(4, 'remote-it-help', '2015-04-16', 'test4', 91, '2015-04-16');
爲什麼不只是記錄使用情況?用戶,date_used – Strawberry
您可以使用mysql調度程序在給定的(重複)週期執行任務 –