我正在观看有关MySQL的教程,并让我问自己有关变量time_zone
的功能以及为什么需要更改它。
当前,我对time_zone
和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 |
,而是我应该下载时区说明表(也是,是的,我在Windows上)
我不明白的是,如果我不使用MySQL,可能会发生什么。另外,NOW()
在我的城市/国家/地区打印了当前时间……因此它似乎在起作用。
可以用于时区转换,例如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说明表。这是(我认为),因为它们不断变化。
"为什么要更改它"?通常,您应该将其设置为SYSTEM
,并将计算机设置为适当的设置。然后忘记它。如果您移动到另一个时区,则,然后更改系统设置。
否则,这听起来像是教程正在浪费您的时间。