时区在数据库中是错误的



我已经与phpMyAdmin中的Current_timestamp函数约会了。小时的输出值1小时是错误的。我尝试使用MySQL更改它 SET TIME_ZONE = '+01:00';

但是,它仍将在1小时提交日期。有任何建议吗?

您正在触摸一个复杂的主题。

当表的一列具有TIMESTAMP数据类型时,所有值都存储在UTC 将当前time_zone设置转换为UTC之后。当您从这些列中检索值时,它们会被翻译回您当前的time_zone。这很方便,因为您可以通过将time_zone视为用户偏好来向全球用户展示Datestamp。

当列具有DATETIME数据类型时,转换不会发生

这是一个示例:

CREATE TABLE t1 (
  ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  dt DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

SET time_zone = 'UTC';
INSERT INTO t1 (ts, dt) VALUES (NOW(), NOW());
SET time_zone = 'Europe/Paris';
INSERT INTO t1 (ts, dt) VALUES (NOW(), NOW());

SET time_zone = 'UTC';
SELECT  * FROM t1;    /* notice differences presentation of ts columns, ds stay the same */
SET time_zone = 'Europe/Paris';
SELECT  * FROM t1;    /* again */
SET time_zone = 'America/Halifax';
SELECT  * FROM t1;    /* again */

PRO提示:如果使用名为"时区" Europe/Paris,您将自动获得所选地点的日光时间规则的好处。IANA维护了称为ZoneInfo数据库的规则。许多Linux发行版在其常规更新中包括对ZoneInfo数据库的更改。

相关内容

  • 没有找到相关文章

最新更新