gpt4 book ai didi

mysql - 数据库中的时区错误

转载 作者:行者123 更新时间:2023-11-30 21:33:38 25 4
gpt4 key购买 nike

我在 phpmyadmin 中用 CURRENT_TIMESTAMP 函数设定了一个日期。小时的输出值错了1小时。我尝试在 mysql 中使用SET TIME_ZONE = '+01:00';

但是它仍然会提前 1 小时提交日期。有什么建议吗?

最佳答案

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

当表的一列具有 TIMESTAMP 数据类型时,所有值都以 UTC 格式存储,从您当前的 time_zone 设置转换为世界标准时间。当您从这些列中检索值时,它们将被转换回您当前的 time_zone。这很方便,因为您可以将 time_zone 视为用户首选项,从而在全局范围内以用户本地时间向他们显示日期戳。

当列具有 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 */

专业提示:如果您使用命名时区 Europe/Paris,您将自动受益于所选区域设置的夏令时规则。规则,称为zoneinfo database , 由 IANA 维护.许多 Linux 发行版在其定期更新中包含对 zoneinfo 数据库的更改。

关于mysql - 数据库中的时区错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55024435/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com