在mysql datetime中表示utc时间不正确

时间:2012-11-20 19:16:53

标签: mysql datetime utc

所以我有这个应用程序从手机接收包括gps时间的UTC。我现在将它存储在我的mysql数据库中。

我有两个日期时间字段,其中包含来自电话的时间和一个服务器时间。

我的查询如下所示:INSERT INTO GeoLocation(Time,ServerTime)VALUES(FROM_UNIXTIME(1353438497),UTC_TIMESTAMP())

我简化并删除了所有其他值。目前的utc unix时间戳现在是:1353438597符合http://www.unixtimestamp.com/index.php所以我的其他手机时间戳是100秒,非常合理。

然而,现在却是有趣的事情。我应该提一下我住在瑞典的+1时区,服务器在瑞典,最有可能配置为瑞典时间

当我使用phpmyadmin查看刚刚插入的值时,它表示时间是2012-11-20 20:08:17但是服务器时间是2012-11-20 19:08:23。因此,即使两者都是正确的utc时间,一个进入了屁股From_unixtime而另一个进入了UTC_TIMESTAMP,它们现在显示不同的时间。

我读过你需要用SET time_zone ='+ 00:00';

设置时区

所以我尝试在phpmyadmin中打开一个查询窗口并输入

SET time_zone = '+00:00';
SELECT Time, ServerTime FROM `GeoLocation` WHERE 1;

但我仍然得到两个字段报告的完全相同的时间。

然而phpmyadmin会运行这两行,因为如果我改为尝试这个:

SELECT @ @global.time_zone , @ @session.time_zone

我明白了:

@@ global.time_zone @@ session.time_zone

系统系统

但如果我这样做:

SET time_zone = '+00:00';
SELECT @@global.time_zone, @@session.time_zone

我明白了:

@@ global.time_zone @@ session.time_zone

SYSTEM +00:00

所以它对我没有任何意义,我已经确认我提供UTC时间(从unix时间开始)然后它显示为UTC + 1并且它没有帮助设置时区。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

解决方案是执行" SET time_zone =' +00:00&#39 ;;"在数据库中存储数据之前(插入)。

当您读取数据时,这对您没有好处,但如果您在存储数据时调用它,一切都会没问题。