我正在观看有关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}}打印出我所在城市/国家/地区的当前时间......所以它似乎正在运作。
答案 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
并正确设置计算机。然后忘记它。如果您移动到其他时区,然后更改系统设置。
否则,听起来好像教程浪费你的时间。