MySQL 活动安排程序每天从凌晨 12 点开始,每 15 分钟继续工作直到凌晨 5 点

MySQL Event scheduler every day start at 12 AM and continue work EVERY 15 MINUTE till 5 AM

创建活动every_day_1AM_to_5AM_data_insert
每 1 天一次
开始时间戳(CURRENT_DATE)
结束时间戳(CURRENT_DATE)+间隔 5 小时完成保留启用
Any insert query here;

就其价值而言,当事件开始 运行 查询时,它会一直持续到查询完成。您的 CREATE EVENT 代码表示在 CURRENT_DATE 开始 运行 活动(当前日期的当地时间午夜 - 一个时间可能已经过去了)。它说停止在今天 05:00 重复事件——也可能是过去的时间。所以,我打赌你的活动永远不会 运行s.

您可能希望 运行 午夜的活动。

ON SCHEDULE EVERY 1 DAY
STARTS CURRENT_DATE + INTERVAL 1 DAY
ENDS CURRENT_DATE + INTERVAL 1 YEAR
ON COMPLETION PRESERVE

专业提示 避免在午夜时分 运行 收拾东西。为什么?其他人都这样做,您的活动将不得不与所有其他午夜活动竞争。尝试

STARTS CURRENT_DATE + INTERVAL 1 DAY + INTERVAL 137 SECOND

到 运行 它在午夜后几秒钟的某个时间。

MySQL 不支持在 SCHEDULE 子句中设置每天的开始和结束时间。相反,您应该创建一个由您的事件调用的存储过程,如果您在所需的时间内 window,则在其中签入。像这样:

CREATE PROCEDURE my_worker(IN from_time TIME, IN to_time TIME)
BEGIN
  IF CURRENT_TIME() BETWEEN from_time AND to_time THEN

  -- do your work here

  END IF;
END

这里是事件:

CREATE EVENT every_day_data_insert
    ON SCHEDULE EVERY '15' MINUTE
    ON COMPLETION PRESERVE ENABLE
    DO 
BEGIN
    CALL `my_worker`('00:30:00', '05:30:00');   --- from 12:30 AM to 5:30 AM
END;