gin*_*gin 30 mysql events scheduler
这是我的查询
CREATE EVENT reset ON SCHEDULE AT TIMESTAMP DO UPDATE `ndic`.`students` SET `status` = '0';
Run Code Online (Sandbox Code Playgroud)
如何在每天下午1点将状态更新为"0".我该怎么做而不是TIMESTAMP?
小智 33
这对你的工作来说可能为时已晚,但这就是我如何做到的.我希望每天凌晨1点运行一些东西 - 我相信这与你正在做的事情类似.我是这样做的:
CREATE EVENT event_name
ON SCHEDULE
EVERY 1 DAY
STARTS (TIMESTAMP(CURRENT_DATE) + INTERVAL 1 DAY + INTERVAL 1 HOUR)
DO
# Your awesome query
Run Code Online (Sandbox Code Playgroud)
oll*_*lle 32
关于CREATE EVENT的文档非常好,但需要一段时间才能做到正确.
你有两个问题,第一,使事件重复,第二,使它在每天13:00运行.
此示例创建一个重复发生的事件.
CREATE EVENT e_hourly
ON SCHEDULE
EVERY 1 HOUR
COMMENT 'Clears out sessions table each hour.'
DO
DELETE FROM site_activity.sessions;
Run Code Online (Sandbox Code Playgroud)
在命令行MySQL客户端中,您可以:
SHOW EVENTS;
Run Code Online (Sandbox Code Playgroud)
这会列出每个事件及其元数据,例如它应该只运行一次,还是重复发生.
第二个问题:将定期事件指向特定的计划项目.
通过尝试不同类型的表达,我们可以提出如下:
CREATE EVENT IF NOT EXISTS `session_cleaner_event`
ON SCHEDULE
EVERY 13 DAY_HOUR
COMMENT 'Clean up sessions at 13:00 daily!'
DO
DELETE FROM site_activity.sessions;
Run Code Online (Sandbox Code Playgroud)
Ada*_*dam 15
我的用例是类似的,除了我希望每天凌晨2点运行日志清理事件.正如我在上面的评论中所说,DAY_HOUR对我不起作用.在我的情况下,我真的不介意可能错过第一天(并且,鉴于它是在凌晨2点运行,明天凌晨2点几乎总是在下一个凌晨2点),所以我使用:
CREATE EVENT applog_clean_event
ON SCHEDULE
EVERY 1 DAY
STARTS str_to_date( date_format(now(), '%Y%m%d 0200'), '%Y%m%d %H%i' ) + INTERVAL 1 DAY
COMMENT 'Test'
DO
Run Code Online (Sandbox Code Playgroud)
mer*_*rcu 11
DROP EVENT IF EXISTS xxxEVENTxxx;
CREATE EVENT xxxEVENTxxx
ON SCHEDULE
EVERY 1 DAY
STARTS (TIMESTAMP(CURRENT_DATE) + INTERVAL 1 DAY + INTERVAL 1 HOUR)
DO
--process;
Run Code Online (Sandbox Code Playgroud)
重要: - >
SET GLOBAL event_scheduler = ON;
Run Code Online (Sandbox Code Playgroud)
Nav*_*mar 10
试试这个
CREATE EVENT event1
ON SCHEDULE EVERY '1' DAY
STARTS '2012-04-17 13:00:00' -- should be in the future
DO
-- your statements
END
Run Code Online (Sandbox Code Playgroud)