1

假设下表:

CREATE TABLE IF NOT EXISTS `test` (
  `stamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

当我运行以下 SQL 时:

SET time_zone = '+00:00';
INSERT INTO `test` (`stamp`) VALUES (CURRENT_TIMESTAMP);

中的值test是我机器的本地时间而不是 UTC。

根据 MySQL网站

TIMESTAMP 列的值从当前时区转换为 UTC 进行存储,从 UTC 转换为当前时区进行检索。

我究竟做错了什么?我想用 UTC 日期/时间戳存储我的记录,并在用户的本地时区检索它们。

4

1 回答 1

0

根据 MySQL 5.5 文档,使用 TIMESTAMP 数据类型将默认使用服务器的时区,除非您从客户端更改变量。

来自:http ://dev.mysql.com/doc/refman/5.5/en/time-zone-support.html

每个连接时区。每个连接的客户端都有自己的时区设置,由会话 time_zone 变量给出。最初,会话变量从全局 time_zone 变量中获取其值,但客户端可以使用以下语句更改自己的时区:

mysql> SET time_zone = 时区;

于 2012-05-01T21:46:45.997 回答