【问题标题】:SQL Time Zone IssueSQL 时区问题
【发布时间】:2019-07-11 21:14:17
【问题描述】:

我正在开发一个基于 PHP 的项目我有一个问题,我购买了一个主机,其服务器位于另一个国家,我在巴基斯坦,当我从 PHPMyAdmin 在数据库表中输入数据时输入那个国家的日期是比我们晚了 11 个小时,这就是为什么我的插入查询和更新查询不起作用 PHP 时区已设置但服务器时区未设置。

php_value date.timezone 'Asia/Karachi';

我用这是我的htaccess文件也用

    date.timezone = "Asia/Karachi"

在 php ini 文件中

【问题讨论】:

标签: php mysql server


【解决方案1】:

(期待评论)

如果您编写具有用户特定时区的网站,那么在数据库站点管理时区有点复杂。我更喜欢这个解决方案:

  • 尝试在 unix 时间将所有时间戳存储为 bigint 值。
  • 仅在用户界面将时间转换为字符串。

示例

对于我使用的数据库存储:

UPDATE table SET start_time = UNIX_TIMESTAMP();

结果要么作为本机整数检索,要么转换为 UTC/GMT 时间:

SELECT unix_time, UNIX_TIMESTAMP(db_date)

您可以使用以下方法对其进行测试:

SELECT UNIX_TIMESTAMP(), UNIX_TIMESTAMP(now());

在 PHP 中,您现在可以通过加减法简单地进行快速时间计算。它在用户界面打印时间,设置时区(可能由数据库查询评估)并使用 date() 或 strftime(),或任何日期+时间类。

【讨论】:

    【解决方案2】:

    您应该在 PHP 中打开与数据库服务器的连接时设置您的 MySQL 时区。

    你可以在这里看到一些例子:Set timezone in PHP and MySQL

    您也可以这样做(与 MariaDB 一起使用,从未在 MySQL 上测试过):

    $db->exec("SET time_zone='Asia/Karachi';");
    

    这样您就不必更新数据库配置,并且可以根据变量更新集合。

    【讨论】:

    • 仍然不工作我的时间是 18:46,服务器时间是 5:46
    • 你没有设置你的php时间吗?
    猜你喜欢
    • 2016-08-01
    • 1970-01-01
    • 2011-04-07
    • 2017-11-05
    • 1970-01-01
    • 2019-02-10
    • 1970-01-01
    • 2013-09-16
    • 2016-09-12
    相关资源
    最近更新 更多