SQL时区问题

时间:2019-02-18 13:09:38

标签: php mysql server

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

php_value date.timezone 'Asia/Karachi';

我使用这是我的htaccess文件,也使用

    date.timezone = "Asia/Karachi"

在php ini文件中

2 个答案:

答案 0 :(得分: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()或任何date + time类。

答案 1 :(得分:0)

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

您可以在此处看到一些示例:Set timezone in PHP and MySQL

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

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

这样,您不必更新数据库配置,而可以根据变量来更新设置。