1

在 mysql 中创建事件时,我的时间表定义如下:

 ON SCHEDULE EVERY 1 DAY STARTS '2014-08-08 00:00:00'

但是,当我运行以下查询时:

SELECT * FROM mysql.event;

我看到了以下输出:

在此处输入图像描述

我想知道为什么显示starts时间'2014-08-08 07:00:00'而不是'2014-08-08 00:00:00'我在创建事件时定义的时间。请告诉我。

4

1 回答 1

1

https://dev.mysql.com/doc/refman/5.5/en/events-metadata.html

为了在 mysql.event 表中表示事件信息,execute_at、开始和结束时间被转换为 UTC 并与事件时区一起存储。这使得事件执行能够按定义进行,而不管服务器时区的任何后续更改或夏令时效果如何。last_executed 时间也以 UTC 格式存储。

如果您从 mysql.event 中选择信息,则刚才提到的时间将作为 UTC 值检索。这些时间也可以通过从 INFORMATION_SCHEMA.EVENTS 表或从 SHOW EVENTS 中选择来获得,但它们报告为 ETZ 值。这些来源提供的其他时间表明事件创建或上次更改的时间;这些显示为 STZ 值。下表总结了事件时间的表示。

Value   mysql.event INFORMATION_SCHEMA.EVENTS   SHOW EVENTS
Execute at  UTC ETZ ETZ
Starts  UTC ETZ ETZ
Ends    UTC ETZ ETZ
Last executed   UTC ETZ n/a
Created STZ STZ n/a
Last altered    STZ STZ n/a
于 2019-04-19T14:50:20.613 回答