mysql 中的 time_zone 变量是什么,我为什么要更改它

What is time_zone variable in mysql, and why should I change it

我正在观看有关 mysql 的教程,这让我问自己变量 time_zone 的作用以及为什么需要更改它。

目前,time_zoneNOW() 函数的值如下。

MariaDB [(none)]> SHOW VARIABLES LIKE '%time_zone%';
+------------------+--------+
| Variable_name    | Value  |
+------------------+--------+
| system_time_zone | CET    |
| time_zone        | SYSTEM |
+------------------+--------+
2 rows in set (0.00 sec)

MariaDB [(none)]> SELECT NOW();
+---------------------+
| NOW()               |
+---------------------+
| 2017-03-10 22:38:49 |
+---------------------+
1 row in set (0.00 sec)

因此,本教程建议不应使用 | time_zone | SYSTEM |,我应该下载 Time zone description tables(另外,是的,我在 windows)

我不明白的是,如果我不按原样使用 mysql 会发生什么(通俗地说)。此外,NOW() 在我的 city/country 中打印出当前时间......所以它似乎正在工作。

可用于时区转换如CONVERT_TZ() https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_convert-tz

如果您不使用日期函数或时间戳,这对您来说并不重要。

建议将所有内容存储为UTC,然后以当地时区显示。 所以在那种情况下它会很有用。

此外,如果您正在考虑夏令时,它确实很重要,因为它会根据一年中的时间和时区设置为您进行偏移

将日期和时间存储到 DATETIME 时,就像给时钟拍照一样。

存储到TIMESTAMP时,本地时间根据时区转换为UTC。该值存储在数据库中。当你把它取回来时;它被重新转换。如果您在这两种情况下都处于同一时区,则看不到任何差异。也就是说,在 出现 就像 DATETIME 一样操作。但是,如果世界另一端的某个人获取同一列,他们会看到它已转换为 他们的 时区。

TZ描述表需要单独安装。这是(我假设)因为它们不断变化。

"Why should I change it"?通常您应该将其设置为 SYSTEM 并适当地设置您的计算机。然后算了。如果您移动到不同的时区,然后更改系统设置。

否则,教程听起来像是在浪费您的时间。