如何查询MySQL Scheduled Event的下次执行时间?
计算MySQL Event Scheduler事件的下次执行时间
针对你设置的固定间隔重复事件,可通过INFORMATION_SCHEMA.EVENTS中的已有字段结合间隔规则,直接计算出下次执行时间,无需手动推算。以下是几种实用方案:
针对你的三个特定事件的查询
直接根据事件名称和固定间隔计算,精准匹配你的需求:
SELECT EVENT_NAME, LAST_EXECUTED, CASE WHEN EVENT_NAME = '你的14天事件名称' THEN DATE_ADD(LAST_EXECUTED, INTERVAL 14 DAY) WHEN EVENT_NAME = '你的31天事件名称' THEN DATE_ADD(LAST_EXECUTED, INTERVAL 31 DAY) WHEN EVENT_NAME = '你的50天事件名称' THEN DATE_ADD(LAST_EXECUTED, INTERVAL 50 DAY) END AS NEXT_EXECUTION_TIME FROM INFORMATION_SCHEMA.EVENTS WHERE EVENT_SCHEMA = '你的数据库名称' AND EVENT_NAME IN ('你的14天事件名称', '你的31天事件名称', '你的50天事件名称');
处理从未执行过的事件
如果事件还未触发过(LAST_EXECUTED为NULL),改用事件的启动时间STARTS计算:
SELECT EVENT_NAME, STARTS, CASE WHEN EVENT_NAME = '你的14天事件名称' THEN DATE_ADD(STARTS, INTERVAL 14 DAY) WHEN EVENT_NAME = '你的31天事件名称' THEN DATE_ADD(STARTS, INTERVAL 31 DAY) WHEN EVENT_NAME = '你的50天事件名称' THEN DATE_ADD(STARTS, INTERVAL 50 DAY) END AS NEXT_EXECUTION_TIME FROM INFORMATION_SCHEMA.EVENTS WHERE EVENT_SCHEMA = '你的数据库名称' AND EVENT_NAME IN ('你的14天事件名称', '你的31天事件名称', '你的50天事件名称') AND LAST_EXECUTED IS NULL;
通用查询(适配所有按天间隔的事件)
自动解析EVENT_SCHEDULE中的间隔值,无需逐个指定事件:
SELECT EVENT_NAME, LAST_EXECUTED, STARTS, CASE WHEN LAST_EXECUTED IS NOT NULL THEN DATE_ADD(LAST_EXECUTED, INTERVAL SUBSTRING_INDEX(SUBSTRING_INDEX(EVENT_SCHEDULE, 'EVERY ', -1), ' ', 1) DAY ) ELSE DATE_ADD(STARTS, INTERVAL SUBSTRING_INDEX(SUBSTRING_INDEX(EVENT_SCHEDULE, 'EVERY ', -1), ' ', 1) DAY ) END AS NEXT_EXECUTION_TIME FROM INFORMATION_SCHEMA.EVENTS WHERE EVENT_SCHEMA = '你的数据库名称' AND EVENT_SCHEDULE LIKE 'EVERY % DAY%';
注意事项
- 替换查询中的
你的数据库名称和事件名称为实际值 - 若事件固定在某一时刻执行(比如你设置的14天事件01:00),
DATE_ADD会自动保留时间部分,无需额外处理 - 若事件设置了结束时间(
ENDS字段),可添加额外判断过滤掉超过结束时间的计算结果
内容的提问来源于stack exchange,提问作者Russell Sulley
相关产品推荐
相关产品推荐

