我已经用phpmyadmin中的CURRENT_TIMESTAMP函数进行了约会。并且小时的输出值错误了1小时。我已经尝试过使用
SET TIME_ZONE = '+01:00';
但是它仍会在1小时之前提交日期。有什么建议吗?
答案 0 :(得分:0)
您正在处理一个复杂的话题。
当表的列具有time_zone
数据类型时,所有值都将存储在UTC中,在 之后从当前的time_zone
设置转换为UTC。当您从这些列中检索值时,它们将转换回当前的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
时,不会发生翻译 。
这是一个例子:
{{1}}
专业提示::如果您使用命名时区{{1}},您将自动从所选区域设置的夏令时规则中受益。由zoneinfo database维护称为IANA的规则。许多Linux发行版在其定期更新中包括对zoneinfo数据库的更改。