MySQL时区变化?

Kar*_*rem 44 mysql timezone

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

我的主人刚给了我这个链接http://dev.mysql.com/doc/refman/5.1/en/time-zone-support.html然后就去了所以我有点失落谢谢

Ben*_*n D 41

例如,正如欧麦尔所指出的,最简单的方法就是这样做

mysql> SET GLOBAL time_zone = 'America/New_York';
Run Code Online (Sandbox Code Playgroud)

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

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

如果你看到这个,你可能需要运行一个tzinfo_to_sql翻译...它很容易做,但不是很明显.从linux命令行输入:

mysql_tzinfo_to_sql /usr/share/zoneinfo/|mysql -u root mysql -p
Run Code Online (Sandbox Code Playgroud)

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

mysql> SET GLOBAL time_zone = timezone;
Run Code Online (Sandbox Code Playgroud)

  • Windows 上的用户收到“#1298 - 未知或不正确的时区”怎么办? (2认同)

小智 36

发出命令:

SET time_zone = 'America/New_York';
Run Code Online (Sandbox Code Playgroud)

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

这是为单个客户端设置MySQL时区的命令,假设您的客户端分布在多个时区.

应在每个涉及日期的SQL命令之前执行此命令.如果您的查询通过类,那么这很容易实现.

  • 它对我不起作用.我得到一个"错误代码:1298.未知或不正确的时区:'America/New_York'" (10认同)
  • 这将自动更改从所有TIMESTAMP字段获得的日期/时间,但不会更改DATETIME字段. (3认同)

JJC*_*JJC 22

虽然Bryon的回答很有帮助,但我只想补充说他的链接是用于PHP时区名称,这与MySQL时区名称不同.

如果要将单个会话的时区设置为GMT + 1(准确地说是UTC + 1),只需在该命令中使用字符串"+01:00".即:

SET time_zone = '+01:00';

要查看MySQL会话使用的时区,只需执行以下命令:

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

这是一个很好的参考,有更多细节:MySQL 5.5参考时区

  • SELECT @@ global.time_zone,@@ session.time_zone,@@ global.system_time_zone; (2认同)

dro*_*lex 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'");
Run Code Online (Sandbox Code Playgroud)

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

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