在MySQL中更改连接时区

时间:2011-04-01 06:52:49

标签: mysql timezone

我的服务器正在MDT

中运行

所以我用了一个来转换EST

SET  time_zone = '-5:00'

但是,如何将其切换为EDT,因为

While `EST` is only valid in winter, while in summer how to change it to `EDT`

我只是尝试使用指定的时区。但我收到了以下错误

 #1298 - Unknown or incorrect time zone: 'America/Toronto'

我不明白如何解决这个问题

如何切换

  

UTC -05 TO UTC-04

6 个答案:

答案 0 :(得分:64)

对于Linux,BSD和Mac OS X,如果需要加载时区表,请执行以下操作:

$ mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -uroot mysql

答案 1 :(得分:11)

由于您使用的是Windows,因此必须将时区描述表导入MySQL服务器。

http://dev.mysql.com/downloads/timezones.html

答案 2 :(得分:4)

使用 WampServer Windows 上为我服务:

  • see here
  • 下载POSIX版本
  • 解压缩
  • 将所有文件放在wamp mysql数据中:C:\ wamp \ bin \ mysql \ mysql5.7.11 \ data \ mysql
  • 重新启动wamp

更多信息:

“要为MyISAM时区表使用包含.frm,.MYD和.MYI文件的时区包,请下载并解压缩。这些表文件是mysql数据库的一部分,因此您应该将文件放在MySQL服务器数据目录的mysqlsubdirectory中。在执行此操作之前停止服务器并在之后重新启动它“

https://dev.mysql.com/downloads/timezones.html

答案 3 :(得分:1)

您是否尝试过使用zoneinfo名称,例如“America / New_York”而不是缩写(只有一半时间有效)?

理想情况下,您不应该全部使用服务器时区 - 以UTC格式存储日期,然后将其转换为客户端代码中的相应时区。 (这取决于你要存储的内容,请注意。具有时区的用户指定的未来日期/时间值应该以这种方式存储,而不是转换为任何其他时区,以防万一规则在现在和未来的日期/时间之间变化。但是对于机器记录的时间,例如记录,交易等,我肯定会存储UTC。我绝不建议存储“只是本地时间并假设服务器并且客户端具有相同的规则“。)

答案 4 :(得分:0)

仅出于完整性考虑,Mac用户可以在mysql_tzinfo_to_sql目录中找到/usr/local/mysql/bin实用程序。

因此,完整的命令将为/usr/local/mysql/bin/mysql_tzinfo_to_sql /usr/share/zoneinfo | ./mysql -p -u root mysql

我花了几个小时来找到该实用程序,上面的路径可能会节省您的时间!

答案 5 :(得分:0)

如果是 Mysql8 ,并且想要设置 EDT 时区'America / New_York',请按照以下步骤操作:

  1. 转到/etc/my.cnf
  2. 在[mysqld]下添加它 default-time-zone ='America / New_York'
  3. systemctl重新启动mysqld

如果您遇到此问题,将遇到致命错误,如下所示:

Fatal error: Illegal or unknown default time zone

然后执行以下步骤:

  1. 首先从/etc/my.cnf文件中删除 default-time-zone ='America / New_York'

    的条目
  2. 转到shell(从mysql退出)并运行命令

    $ mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql
    
  3. 再次添加行

  4. 重启mysql