栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

PHP和MySQL存在时区问题

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

PHP和MySQL存在时区问题

这里的技巧是知道什么是列类型

date_last_active
。我有足够的经验,
TIMESTAMP
并且
DATETIME
知道一个翻译(并尊重)MySQL
time_zone会话变量,而另一个没有。

mysql> SET SESSION time_zone = 'America/New_York';Query OK, 0 rows affected (0.00 sec)mysql> create table timetest ( dt datetime NULL, ts timestamp NOT NULL DEFAULT 0 );Query OK, 0 rows affected (0.06 sec)mysql> INSERT INTO timetest ( dt, ts ) VALUES ( UTC_TIMESTAMP(), UTC_TIMESTAMP() );Query OK, 1 row affected (0.00 sec)mysql> INSERT INTO timetest ( dt, ts ) VALUES ( NOW(), NOW() );Query OK, 1 row affected (0.00 sec)mysql> SELECt * FROM timetest;+---------------------+---------------------+| dt       | ts       |+---------------------+---------------------+| 2009-06-27 17:53:51 | 2009-06-27 17:53:51 | | 2009-06-27 13:53:54 | 2009-06-27 13:53:54 | +---------------------+---------------------+2 rows in set (0.00 sec)mysql> set session time_zone='UTC';Query OK, 0 rows affected (0.00 sec)mysql> SELECt * FROM timetest;+---------------------+---------------------+| dt       | ts       |+---------------------+---------------------+| 2009-06-27 17:53:51 | 2009-06-27 21:53:51 | | 2009-06-27 13:53:54 | 2009-06-27 17:53:54 | +---------------------+---------------------+2 rows in set (0.00 sec)

所以,这是我的工作:

  • 插入数据库时​​,请在PHP和MySQL中使用UTC。在
    my.cnf
    我有:
    time_zone=UTC
    避免任何问题,MySQL和PHP中的我
    date_default_timezone_set('UTC')
  • 使用
    UTC_TIMESTAMP()
    而不是
    NOW()
    -一种是UTC,一种是使用本地(会话)时区。如果您遵循上面的第一点,请使用UTC_TIMESTAMP()。
  • 选择显示给用户时,在显示任何内容之前先设置
    set time_zone='
    local_time_zone
    '
  • 如果必须显示内容,然后进行更新,请确保将您的呼叫括在PHP和MySQL中的相应时区更改中。

希望这足以弄清楚如何解决此问题。如果您还有其他问题,请告诉我。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/405326.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号