我在我的数据库上创建了一个 Mysql 事件,它工作正常,但我想仅在特定的时间间隔内运行。
这是我的实际事件:
CREATE DEFINER=`admin`@`%`
EVENT `respaldoRegPosition` ON SCHEDULE EVERY 15 MINUTE STARTS '2017-08-11 14:59:30' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
-- INSERT INTO BACKUP TABLE
INSERT INTO regPositionBACKUP (idPosition, deviceId, lastPositionTime, divisionew, longitude, divisionns, latitude, direction, gradeLon, gradeLat, speed)
-- GET DATA
SELECT idPosition, deviceId, lastPositionTime, divisionew, longitude, divisionns, latitude, direction, gradeLon, gradeLat, speed
FROM regPosition
WHERE regPosition.lastPositionTime < DATE_SUB(NOW(), INTERVAL 3 MONTH)
ORDER BY regPosition.lastPositionTime LIMIT 3000;
-- DELETE DATA FROM ORIGINAL TABLE
DELETE FROM regPosition WHERE regPosition.lastPositionTime < DATE_SUB(NOW(), INTERVAL 3 MONTH) ORDER BY regPosition.lastPositionTime LIMIT 3000;
END
可以这样做吗?
我希望它每天在 00:00:00 到 06:00:00 之间运行,间隔 10 分钟。
我可以毫无问题地创建一个执行间隔为 10 分钟的事件(每 10 分钟按计划执行一次),但是我如何才能每天运行该事件(每 1 天按计划执行一次)并每次每 10 分钟执行一次间隔。
谢谢
最佳答案
在寻找信息时,我发现此帖子可以解决我的问题。
https://dba.stackexchange.com/a/80050
谢谢大家。
[编辑]
这是我实现的解决方案:
BEGIN
DECLARE rightnow DATETIME;
DECLARE hh,mm TINYINT;
SET rightnow = NOW();
SET hh = HOUR(rightnow);
SET mm = MINUTE(rightnow);
IF hh >= 02 AND hh <= 06 THEN
-- INSERT INTO BACKUP TABLE
INSERT INTO regPositionBACKUP (idPosition, deviceId, lastPositionTime, divisionew, longitude, divisionns, latitude, direction, gradeLon, gradeLat, speed)
-- GET DATA
SELECT idPosition, deviceId, lastPositionTime, divisionew, longitude, divisionns, latitude, direction, gradeLon, gradeLat, speed
FROM regPosition
WHERE regPosition.lastPositionTime < DATE_SUB(NOW(), INTERVAL 3 MONTH)
ORDER BY regPosition.lastPositionTime LIMIT 3000;
-- DELETE DATA FROM ORIGINAL TABLE
DELETE FROM regPosition WHERE regPosition.lastPositionTime < DATE_SUB(NOW(), INTERVAL 3 MONTH) ORDER BY regPosition.lastPositionTime LIMIT 3000;
END IF;
END
因此,将此条件添加到事件的代码中,我可以始终每 10 分钟运行一次该事件,但它只会在我设置的时间间隔 (02:00-06:00) 内执行
关于mysql - Mysql 事件是否有可能每天持续一段时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45638426/