16

在 MySQL 中,您可以设置一个名为time_zone的会话变量来更改时区。这很有用,例如在查看来自另一个国家的时间戳时。这是一个例子:

mysql> select now();
+---------------------+
| now()               |
+---------------------+
| 2010-12-30 18:59:18 |
+---------------------+
1 row in set (0.00 sec)

mysql> set time_zone='Brazil/East';
Query OK, 0 rows affected (0.00 sec)

mysql> select now();
+---------------------+
| now()               |
+---------------------+
| 2010-12-30 09:59:29 |
+---------------------+
1 row in set (0.00 sec)

是否可以将其放入选项文件中,例如 .my.cnf ?

当我尝试时,它不起作用。我得到的是:

mysql: unknown variable 'time_zone=Brazil/East'
4

7 回答 7

18

它应该是

default_time_zone=Brazil/East

详细信息: http: //dev.mysql.com/doc/refman/5.5/en/server-system-variables.html#sysvar_time_zone

选项文件格式 = default_time_zone

于 2010-12-30T12:23:58.590 回答
3

我不确定 Xampp 中发生了什么变化,但这个解决方案只有在你把这条线放在正确的地方时才有效。相信我,我尝试了很多次,并且不得不进行非常彻底的搜索才能找到这个解决方案。

default-time-zone = "+00:00"

例子:

read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
default-time-zone = "+00:00" <--- Place here.
log_error = "mysql_error.log"

https://community.apachefriends.org/f/viewtopic.php?f=16&t=47656

此外,如果您要使用“America/Los_Angeles”,您需要确保您的数据库中填充了正确的时区名称。我建议使用偏移量。我实际上建议使用 UTC 作为您的基础,然后根据用户的时区从该点转换您的时间,这将为您以后省去很多麻烦,并使您的数据库保持良好和统一。查看我在下面链接的指南,它为我解释得很清楚,我使用了这个系统。有很多方法可以对其进行编码,但采用这种方法将为您节省很多问题。

http://www.vertabelo.com/blog/technical-articles/the-proper-way-to-handle-multiple-time-zones-in-mysql

于 2017-06-24T11:28:45.083 回答
2

对于 MAMP,我default_time_zone=-03:00在下面添加[mysqld]/Applications/MAMP/conf/my.cnf

对于巴西/东部,我会收到以下错误,可能是因为它已被弃用(https://en.wikipedia.org/wiki/List_of_tz_database_time_zones):

[ERROR] Fatal error: Illegal or unknown default time zone 'Brazil/East'

于 2018-04-24T16:10:19.227 回答
1

~/.my.cnf

[mysql]
init_command="SET time_zone='Brazil/East'"
于 2018-06-28T08:36:26.333 回答
0

有点晚了,但这可能会有所帮助:

明确设置时区时,请确认您使用的是正确的时区名称,请记住其中许多已被弃用。您可以使用https://en.wikipedia.org/wiki/List_of_tz_database_time_zones进行确认。

在我的情况下,使用 MySQL 5.7,在我的 mysqld.cnf 文件中的 [mysqld] 下方添加时区名称时,不推荐使用的时区名称不起作用。使用新的时区名称,并重新启动 mysql 服务,工作。

所以对于这里的用户@kev,使用America/Sao_Paulo应该可以,而不是使用Brazil/East

于 2018-03-06T10:09:00.130 回答
0

编辑以下内容:

nano /etc/mysql/conf.d/mysql.cnf && systemctl restart mysql ; systemctl status mysql

MySQL.cnf:

[mysql]
default_time_zone=America/Vancouver

有关当前时区格式的信息,请参见此处 --> https://en.wikipedia.org/wiki/List_of_tz_database_time_zones

于 2019-06-06T11:06:08.553 回答
0

对于 Windows 10:

转到文件夹并以管理员身份C:\ProgramData\MySQL\MySQL Server 8.0打开文件。my.ini

滚动到[mysqld]: 行。

在后面添加这行[mysqld]

#default time-zone
default-time-zone = '<your_time_zone>'

保存文件并从窗口重新启动MySQL80服务。Services

您可以控制从

MySQL Workbench -> Local instance -> Server -> 
Status and System Variables -> System Variables -> Filtered -> time_zone
于 2021-05-26T09:54:54.303 回答