MySQL时区变化?

时间:2010-08-10 17:46:23

标签: mysql timezone

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

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

7 个答案:

答案 0 :(得分:40)

如Umar所述,最简单的方法就是

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

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

  

#1298 - 时区未知或不正确

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

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;

答案 1 :(得分:35)

发出命令:

SET time_zone = 'America/New_York';

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

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

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

答案 2 :(得分:21)

虽然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 Reference on Time Zones

答案 3 :(得分: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行。

答案 4 :(得分:4)

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

mysql> SET GLOBAL time_zone = timezone;

答案 5 :(得分:1)

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

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

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

答案 6 :(得分:0)

这很好

<?php
      $con=mysqli_connect("localhost","my_user","my_password","my_db");
      $con->query("SET GLOBAL time_zone = 'Asia/Calcutta'");
      $con->query("SET time_zone = '+05:30'");
      $con->query("SET @@session.time_zone = '+05:30'");
?>