2

在我创建事件后...

DELIMITER $$
CREATE DEFINER=`abc`@`localhost` EVENT `testEventYearly` ON SCHEDULE EVERY 1 YEAR STARTS '2018-01-01 00:00:00' ON COMPLETION PRESERVE ENABLE DO BEGIN
CALL `spTestEventYearly` ();
END$$

...我查看mysql.event表格并看到starts. 2018-01-01 06:00:00我检查了服务器上的日期/时间,一切都很好。为什么会有时间上的差异?它会在06:00or处执行00:00吗?

4

1 回答 1

3

https://dev.mysql.com/doc/refman/5.7/en/create-event.html说:

ON SCHEDULE 子句中的时间使用当前会话 time_zone 值进行解释。这成为事件时区;即,用于事件调度并在事件执行时在事件中有效的时区。这些时间将转换为 UTC 并与事件时区一起存储在 mysql.event 表中。这使得事件执行能够按定义进行,而不管服务器时区的任何后续更改或夏令时影响。

(强调我的)

我推断你在美国中部时区。您在本地时区为 UTC -0600 时创建了事件,然后存储的值mysql.event提前 6 小时到 UTC。

于 2018-01-08T21:57:33.253 回答