这里是我的查询MySQL事件调度在特定时间每天
CREATE EVENT reset ON SCHEDULE AT TIMESTAMP DO UPDATE `ndic`.`students` SET `status` = '0';
如何更新状态为“0”,在每天下午1点。我应该放什么来代替TIMESTAMP?
这里是我的查询MySQL事件调度在特定时间每天
CREATE EVENT reset ON SCHEDULE AT TIMESTAMP DO UPDATE `ndic`.`students` SET `status` = '0';
如何更新状态为“0”,在每天下午1点。我应该放什么来代替TIMESTAMP?
该documentation on 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;
当在命令行的MySQL客户端,您可以:
SHOW EVENTS;
此列出的每个事件与它的元数据,如是否应只运行一次,或者是经常性的。
第二个问题:将重复事件指向特定计划项目。
通过尝试各种不同的表情,我们可以拿出类似:
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;
试试这个
CREATE EVENT event1
ON SCHEDULE EVERY '1' DAY
STARTS '2012-04-17 13:00:00' -- should be in the future
DO
-- your statements
END
我使用的情况是类似的,但我希望有一个日志清除事件每天凌晨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
您不能使用'CURRENT_DATE()'而不是'str_to_date(date_format(now(),'%Y%m%d 0200' ),'%Y%m%d%H%i')'?不管怎样,谢谢。 – Linus 2014-04-11 14:00:24
是的 - 除了我希望能够指定它每天运行在0200。如果您使用current_date,则无论您何时运行脚本来创建它,它都会每天运行。 – Adam 2014-04-11 16:58:16
哦,我以为CURRENT_DATE返回了一个格式为:yyyy-MM-dd的日期,意思是时间是00:00,但也许我是不对的。 – Linus 2014-04-11 17:09:17
这可能为时已晚为你的工作,但这是我如何做到的。我希望每天在凌晨1点运行一次 - 我相信这与你正在做的事情类似。这是我如何做的:
CREATE EVENT event_name
ON SCHEDULE
EVERY 1 DAY
STARTS (TIMESTAMP(CURRENT_DATE) + INTERVAL 1 DAY + INTERVAL 1 HOUR)
DO
# Your awesome query
是否需要'TIMESTAMP(CURRENT_DATE)'?似乎只用'CURRENT_DATE + Interval ..'工作.' – Kaspars 2017-03-19 20:04:08
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;
重要: - >
SET GLOBAL event_scheduler = ON;
如果可能的话请添加一个解释.. – 2014-05-12 09:16:06
SET GLOBAL event_scheduler = ON; - >用于激活mysql事件,如果没有创建但不能运行。 http://dev.mysql.com/doc/refman/5.1/en/events-configuration.html – mercu 2014-05-16 15:09:37
CREATE EVENT test_event_03
ON SCHEDULE EVERY 1 MINUTE
STARTS CURRENT_TIMESTAMP
ENDS CURRENT_TIMESTAMP + INTERVAL 1 HOUR
DO
INSERT INTO messages(message,created_at)
VALUES('Test MySQL recurring Event',NOW());
这并不为我工作!我尝试了10天DAY_HOUR,它只是立即执行并预定本身。我也不明白为什么会这样。在我阅读MySQL文档时,DAY_HOUR是一种从现在开始指定几天和几小时的方式 - 它仍然是一个时间间隔。还是我完全误解了? – Adam 2013-01-31 08:05:26
同意@Adam。这似乎不符合每日下午1点运行的要求。基于几次快速测试,我认为它会每13小时执行一次。 ''选择current_timestamp() ,date_add(current_timestamp(),interval 13 day_hour);' – Phil 2018-02-13 21:57:05