【发布时间】:2017-08-28 01:22:01
【问题描述】:
根据 MySQL 文档:
MySQL 将 TIMESTAMP 值从当前时区转换为 UTC 进行存储,并从 UTC 转换回当前时区进行检索。
我对检索转换没问题,但对于存储我已经有一个 UTC 时间戳。它是这样从客户端发送的,因为它是在客户端计算的值,我想避免时区转换(因为我认为这会增加客户端-服务器通信的复杂性)。
如何插入此值以避免进一步转换?
【问题讨论】:
根据 MySQL 文档:
MySQL 将 TIMESTAMP 值从当前时区转换为 UTC 进行存储,并从 UTC 转换回当前时区进行检索。
我对检索转换没问题,但对于存储我已经有一个 UTC 时间戳。它是这样从客户端发送的,因为它是在客户端计算的值,我想避免时区转换(因为我认为这会增加客户端-服务器通信的复杂性)。
如何插入此值以避免进一步转换?
【问题讨论】:
现在我正在使用这个解决方法:
CONVERT_TZ('2009-06-15T13:45:30.0000000Z','+00:00','SYSTEM')
我不希望转换将再次转换的值(尽管在内部),但它似乎对我来说是更方便的解决方案。
另一种选择是使用:
SET time_zone = '+00:00';
--- your query here
SET time_zone = 'SYSTEM';
但在我的情况下,因为我只需要转换两个字段,这似乎有点矫枉过正,尽管在这种情况下根本不应该进行任何转换。
【讨论】:
如果您不希望 MySQL 进行任何转换,也许最简单的方法是将时间戳存储在数字字段中。
这可能是不好的做法,具体取决于您要使用它做什么,该线程对优缺点进行了一些讨论:
Using MySQL's TIMESTAMP vs storing timestamps directly
【讨论】: