Mysql 如何选择UTC_TIMESTAMP()返回-10:00 UTC?

Mysql 如何选择UTC_TIMESTAMP()返回-10:00 UTC?,mysql,timezone,timestamp,utc,Mysql,Timezone,Timestamp,Utc,要么我很愚蠢,要么这里出了什么问题 我有两个SQL Server,一个在本地机器上(本地时间+2 GMT),另一个在其他地方(NOW()似乎返回+8 GMT),我通过phpMyAdmin访问它。我有一个表,它有一个DATETIME列。我正在努力 存储当前的GMT/UTC时间,然后再次显示,仍然显示为GMT/UTC时间 最初我存储了DATE\u SUB(NOW(),间隔8小时),效果很好。但是,后来我读到了UTC_TIMESTAMP(),我更喜欢它,因为它更短,甚至还说: “当前时区设置不影响函数

要么我很愚蠢,要么这里出了什么问题

我有两个SQL Server,一个在本地机器上(本地时间+2 GMT),另一个在其他地方(
NOW()
似乎返回+8 GMT),我通过phpMyAdmin访问它。我有一个表,它有一个
DATETIME
列。我正在努力

存储当前的GMT/UTC时间,然后再次显示,仍然显示为GMT/UTC时间

最初我存储了
DATE\u SUB(NOW(),间隔8小时)
,效果很好。但是,后来我读到了UTC_TIMESTAMP(),我更喜欢它,因为它更短,甚至还说:

“当前时区设置不影响函数显示的值 例如UTC_TIMESTAMP()或日期、时间或日期时间列中的值。“

这么完美对吧?除了没有

让我们假设当前的格林威治时间是2010-02-18 17:18:17(我甚至与英国的某个人进行了双重检查)

在我的本地(+2)服务器上,我得到以下查询结果:

SELECT NOW(); 2010-02-18 19:18:17

SELECT UTC_TIMESTAMP(); 2010-02-18 17:18:17
我的在线服务器上我得到:

SELECT NOW(); 2010-02-19 01:18:17

SELECT UTC_TIMESTAMP(); 2010-02-19 07:18:17 (WHY?!)

我错过什么了吗

可能是因为在线服务器上的时钟错误

尝试运行以下命令:

SELECT  @@system_time_zone, NOW(), UTC_TIMESTAMP()

然后查看它返回哪个区域并与差异匹配。

@@system_time_zone NOW()UTC_TIMESTAMP()CST 2010-02-19 01:35:30 2010-02-19 07:35:30如果我理解正确,服务器会说它是CST(-6),并将其设置为1:35am,所以SQL说可以添加6以到达UTC。。。呸!真令人沮丧。谢谢你的澄清,我以为我做错了什么,这让我发疯了。为什么这么沮丧?NOW()是时区生效后的当前时间,因此函数的工作做得很好不?@Alex我认为MySQL逻辑/解释完全有道理,顺便说一句,那么根据时区,哪一个是不正确的,即您的本地服务器还是在线服务器?我也遇到了同样的问题。