如何每个周末运行mysql事件。每周五开始,每个周日晚上结束

时间:2018-03-07 15:34:52

标签: mysql cron mysql-event

是否可以创建每周末开始的mysql事件。 它应该每周五晚上7点开始,在1小时的间隔内执行,并在每个星期五凌晨5点结束。 (查询更新cron进程每分钟读取一次的表)

似乎mysql事件“ENDS”只是绝对时间。此外,似乎无法创建能够禁用或撤消其他事件的EVENT。

所以,它看起来像mysql事件限制,我可能必须结合mysql事件和cron进程来处理“ENDS”。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:1)

我想到了两种方法:

  1. 将您的活动设置为每小时运行一次。在你的活动体内放一个丑陋的IF。

    SELECT  @dow    := dayofweek(NOW())
    ,       @oclock := hour(NOW());`
    
    IF (@dow = 6 AND @oclock >= 19) 
    OR (@dow = 7) 
    OR (@dow = 1 AND @oclock <= 5) THEN 
        -- run your code here 
    END IF;
    
    • 优点:它很简单,只是有效。
    • 缺点:它太难看了。
  2. 使用多个事件来实现它。例如:

    a)您的第一个活动每周五19:00运行;

    b)它创建一个每小时运行一次的事件,从CURRENT_TIMESTAMP开始,到CURRENT_TIMESTAMP结束+你需要的小时数。

    • 优势:不会有虚拟运行。使用最好的活动。
    • 缺点:更高的复杂性和&#34;动态&#34;事件。需要考虑权限/跟踪/警报/等