我有两台位于英国的Linux/MySQL服务器,在两个报告BST(GMT + 1)上都有当前系统时区,但我发现MySQL的输出有一定的差异。MySQL UTC_TIMESTAMP()忽略当前的@@ time_zone设置
下面的查询:
SELECT version(), @@time_zone, @@system_time_zone, NOW(), UTC_TIMESTAMP()
回报:
Server A: 5.0.27-community-nt | SYSTEM | GMT | 2010-10-12 12:17:01 | 2010-10-12 11:17:01
Server B: 5.0.45-log | SYSTEM | GMT Daylight Time | 2010-10-12 12:17:51 | 2010-10-12 11:17:51
因此,服务器A报告它设置为GMT。服务器进程在格林威治标准时间3月1日开始生效,所以我期待这一点。但是,UTC_TIMESTAMP()已正确(但意外)报告UTC在本地时间之前1小时。
在服务器B上,MySQL进程在夏季开始,因此它正确报告GMT夏令时,并在一小时前再次正确报告UTC。
我的问题是,服务器A如何得到“正确”的答案?而且,10月31日当地时间恢复到GMT + 0时它仍然是正确的吗?
感谢您的支持。让我想知道@@ system_time_zone变量实际上有多有用,但是下面给了我足够的信息:SELECT TIMEDIFF(NOW(),UTC_TIMESTAMP()) – fazy 2010-10-12 14:02:53