【问题标题】:Dates returned from MySQL timestamp column change times从 MySQL 时间戳列更改时间返回的日期
【发布时间】:2016-05-30 13:24:23
【问题描述】:

我目前正在处理 PHP 服务器位于欧洲但数据库服务器位于墨西哥的问题。

在我的应用中,时区设置为:

date_default_timezone_set('America/Mexico_City');

应用程序没有设置 MySQL 时区,所以它似乎使用系统时区,即America/Mexico_City

奇怪的是,当我在 MySQL 中查询时区列时,它有时会使用 Mexio 的时间和欧洲的时间给出日期。

我知道 mysql 将时间戳存储为整数并将它们作为日期字符串返回,我可以通过使用 $db->query("SET time_zone = 'America/Mexico_City'"); 显式设置数据库连接到墨西哥的时区来解决这个问题

但我的问题是,为什么它有时会将时间戳作为日期字符串返回欧洲时间,有时返回墨西哥时间的日期字符串?该应用程序不使用任何类型的特定缓存。

【问题讨论】:

  • 为什么不将所有时间/日期与时区一起存储在数据库中,并在输出时根据需要对其进行操作?

标签: php mysql timezone


【解决方案1】:

很可能,您的问题与此问题有关。

Having Timezone problems with PHP and MySQL

How do I set the time zone of MySQL?

注意他们如何使用SET GLOBAL time_zone = "your_time_zone"SET SESSION time_zone = "your_time_zone"

希望对你有帮助:)

【讨论】:

    猜你喜欢
    • 2022-01-14
    • 2017-12-19
    • 1970-01-01
    • 1970-01-01
    • 2016-12-22
    • 2013-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多