【问题标题】:Issues with MySQL (phpmyadmin) time zonesMySQL(phpmyadmin)时区问题
【发布时间】:2012-10-11 23:12:04
【问题描述】:

我有一个网站存储在共享服务器上,时区是根据服务器的操作系统设置的,比服务器的操作系统提前两个小时。

我更改了我的 php.ini 并尝试了:

SET time_zone='-7:00'
SET time_zone='Canada/Mountain'

在 MySQL 中但它不起作用。有没有解决的办法?要覆盖或设置时区?

我的托管公司支持人员说我应该在每个 mysql 会话开始时运行“SET time_zone”,但我不明白他们的意思,他们对此非常模糊。

【问题讨论】:

  • 我认为当您使用 mysql_connect() 时,他们会将时区配置作为参数发送到 mysql
  • 如果他们这么说,您应该在打开连接并选择数据库后立即使用mysql_query("SET time_zone='-7:00'");mysql_connect, mysql_select_db 函数)

标签: php mysql sql timezone


【解决方案1】:

您需要在连接数据库后立即执行此操作。

对于 EX(这只是一个示例,如果您使用的是 PDO,您可以相应地更改它):

    mysql_query("SET time_zone='-7:00'");

我还想在这里提到 +/- 符号是必不可少的——即使是零。

同样来自Mysql docs

“当前会话时区设置会影响对区域敏感的时间值的显示和存储。这包括由 NOW() 或 CURTIME() 等函数显示的值,以及存储在 TIMESTAMP 列中和从 TIMESTAMP 列中检索的值。

当前时区设置不会影响 UTC_TIMESTAMP() 等函数显示的值或 DATE、TIME 或 DATETIME 列中的值。"

希望有帮助!

【讨论】:

    【解决方案2】:

    当我从 php4 迁移到 php5 时,我在时间和日期方面遇到了类似的问题,我所有的时间函数都停止工作。解决方案是把 date_default_timezone_set('America/Los_Angeles');在第一行代码中。

    【讨论】: