MySQL的时区更改?

我如何将当前UTC时区更改为GMT + 1,什么是正确的行,我只是在phpMyAdmin SQL执行中input它?

我的主机只是给了我这个链接http://dev.mysql.com/doc/refman/5.1/en/time-zone-support.html并走了,所以我有点失去了感谢

发出命令:

SET time_zone = 'America/New_York'; 

(或者任何时区GMT + 1是: http : //www.php.net/manual/en/timezones.php )

这是为单个客户端设置MySQL时区的命令,假设您的客户端跨越多个时区。

这个命令应该在涉及date的每个SQL命令之前执行。 如果你的查询通过一个类,那么这很容易实现。

例如,奥马尔指出,最简单的方法就是这样做

 mysql> SET GLOBAL time_zone = 'America/New_York'; 

使用指定的时区对于调整日光节约的时区非常重要。 但是,对于某些Linux版本,您可能会收到以下响应:

#1298 – 未知或不正确的时区

如果你看到这个,你可能需要运行一个tzinfo_to_sql的翻译…这很容易做到,但并不明显。 从linux命令行input:

 mysql_tzinfo_to_sql /usr/share/zoneinfo/|mysql -u root mysql -p 

提供你的root密码(MySQL root,而不是Linux root),它会将你的zoneinfo中的任何定义加载到mysql中。 然后你可以回去运行你的

 mysql> SET GLOBAL time_zone = timezone; 

虽然Bryon的回答很有帮助,但我想补充一下,他的链接是针对PHP时区名称的,它们与MySQL时区名称不同。

如果您想将个人会话的时区设置为GMT + 1(准确的说是UTC + 1),则只需在该命令中使用string“+01:00”即可。 即:

SET time_zone = '+01:00';

要查看您的MySQL会话正在使用什么时区,只需执行以下操作:

SELECT @@global.time_zone, @@session.time_zone;

这是一个很好的参考资料: MySQL 5.5时区参考

以下是如何同步每个会话和用户设置的PHP(> = 5.3)和MySQL时区。 把它放在需要设置和同步时区的地方。

 date_default_timezone_set($my_timezone); $n = new \DateTime(); $h = $n->getOffset()/3600; $i = 60*($h-floor($h)); $offset = sprintf('%+d:%02d', $h, $i); $this->db->query("SET time_zone='$offset'"); 

$ my_timezone是PHP时区列表中的一个: http ://www.php.net/manual/en/timezones.php

PHP时区必须转换为MySQL的小时和分钟偏移量。 这就是1-4行。

如果您具有SUPER权限,则可以使用以下语句在运行时设置全局服务器时区值:

 mysql> SET GLOBAL time_zone = timezone; 

如果SET time_zone或SET GLOBAL time_zone不起作用,您可以更改如下:

  • 更改时区系统,例如:ubuntu … $ sudo dpkg-reconfigure tzdata

  • 重启服务器,或者你可以重新启动apache2和mysql(/etc/init.d/mysql restart)