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

时间:2017-03-10 21:45:37

标签: mysql timezone mariadb

我正在观看有关mysql的教程,并让我问自己变量NOW()的作用以及需要更改的原因。

目前,我对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 |功能有以下价值。

NOW()

因此,教程建议,{{1}}不应该被使用,而是我应该下载Time zone description tables(也就是说,我是在Windows上)

我不明白的是,如果我不按原样使用mysql,可能会发生什么(以外行人的话说)。此外,{{1}}打印出我所在城市/国家/地区的当前时间......所以它似乎正在运作。

2 个答案:

答案 0 :(得分:1)

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

如果您不使用日期功能或时间戳,那么它对您来说无关紧要。

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

另外,如果你正在考虑日光节省它真正的离合器,因为它根据一年中的时间和时区设置为你的偏移量

答案 1 :(得分:1)

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

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

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

"我为什么要改变它"?通常,您应将其设置为SYSTEM并正确设置计算机。然后忘记它。如果您移动到其他时区,然后更改系统设置。

否则,听起来好像教程浪费你的时间。