mysql - Mysql 事件是否有可能每天持续一段时间?

标签 mysql

我在我的数据库上创建了一个 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/

相关文章:

mysql - 如何让MySQL在grails 2.0上运行

mysql - 在mysql中选择两个用户通信之间的最新消息

php - 使用 id 为不同的列排序

php - Laravel 4 查询生成器 SQL 语句

mysql - 用mysql中的数据填充表

php - MySQL:连接三个表

php - 使 PDO 连接变量可在整个站点访问

javascript - 如何将 Express js 导入到 React js 中?

python - 使用 Amazon Linux 的 Python 2.6.9 上的 mysql.connector 错误

php - 如果电子邮件地址已存在,则在插入时编辑 MySQL 值