MySQL使用CURRENT_TIMESTAMP创建调度事件出现Incorrect AT值错误如何解决
MySQL事件调度器时间加法报错解决方案
问题根源
CURRENT_TIMESTAMP直接与数字执行加法运算时,MySQL会先将其转换为YYYYMMDDHHMMSS格式的整数再做算术计算,而非按照时间间隔逻辑运算,因此秒位数值超过60时会生成非法时间值,触发#1525错误。
可行解决方案
两种写法均支持自动时间进位,无需手动处理时间格式:
- 方案1:使用
INTERVAL时间间隔语法(官方推荐)
直接指定添加的时间单位,MySQL会自动完成分、时、天等各级单位的进位计算,写法如下:
动态调整秒数时只需替换CREATE EVENT event_name ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 30 SECOND DO UPDATE test_table SET value = 0 WHERE id = 1;30为对应数值即可,无需修改其他逻辑。 - 方案2:使用Unix时间戳转换实现
先将当前时间转换为秒级Unix时间戳,加法运算后再转回MySQL支持的时间格式:CREATE EVENT event_name ON SCHEDULE AT FROM_UNIXTIME(UNIX_TIMESTAMP() + 30) DO UPDATE test_table SET value = 0 WHERE id = 1;
内容的提问来源于stack exchange,提问作者Arkaik
相关产品推荐
相关产品推荐

