MySQL和时区

时间:2012-05-01 21:27:42

标签: mysql sql

假设下表:

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 site

  

TIMESTAMP列的值从当前时区转换   到UTC用于存储,从UTC到当前时区用于   检索。

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

1 个答案:

答案 0 :(得分:0)

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

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

  

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

     

的MySQL> SET time_zone = timezone;