【问题标题】:Setting MySQL timezone for session为会话设置 MySQL 时区
【发布时间】:2013-09-22 03:01:30
【问题描述】:

我知道使用这个查询我可以在 mysql 服务器中设置每个会话的时间

SET SESSION time_zone = '+04:00'

问题是如何在我的国家/地区检测 PHP 中的这个 +04:00(由于夏令时,它在一年中可能会有所不同)部分?

【问题讨论】:

    标签: php mysql time timezone dst


    【解决方案1】:

    尝试使用时区名称(如 America/Chicago)而不是 +/- 一组小时。这应该考虑到夏令时。

    如果您还没有将 zoneinfo 加载到您的 mysql 数据库中,则需要。

    【讨论】:

    • 如何加载zoneinfo?问题是这个 zoneinfo 是否可以在共享托管服务器中工作?
    • 它可能已经安装了。如果您可以使用时区名称设置会话,那么您应该很高兴。您需要管理员权限才能将 zoneinfo 加载到 mysql 中。
    • 查看此链接:dev.mysql.com/doc/refman/5.6/en/mysql-tzinfo-to-sql.html 了解如何将时区数据库加载到 MySql 中。
    【解决方案2】:

    我猜你可能在阿塞拜疆?如果是这样,您应该使用 Asia/Baku 的 IANA 时区 ID。该时区在 +4:00 的标准偏移和 +5:00 的日光偏移之间交替。

    请参阅the timezone tag wiki 中的“时区!= 偏移量”和“时区数据库”。

    如果您需要在 MySQL 中执行此操作,则需要使用 mysql_tzinfo_to_sql 将 IANA 时区数据库(又名“zoneinfo”)加载到 MySQL 中。感谢 datasage 和 kordirko 的提示。

    但通常更好的方法是仅在数据库中存储 UTC 时间。您可以使用DateTimeDateTimeZone 类直接在PHP 中进行时区转换。 PHP 也实现了相同的 IANA 时区数据库,您可以在 PHP's list of supported time zones 上找到 Asia/Baku

    【讨论】:

      【解决方案3】:

      打开您的 my.ini 文件。对于 Windows,它位于 /mysql/bin/my.ini 搜索 mysqld 部分。 在此部分输入 -

      default-time-zone = '+00:00'
      

      +00:00 是与 GMT 的偏移量。查看time-zone-support 页面以获得更好的参考。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-12-09
        • 1970-01-01
        • 2020-10-29
        • 2011-02-17
        • 1970-01-01
        • 2012-09-21
        • 2012-08-04
        相关资源
        最近更新 更多