gpt4 book ai didi

MySQL UTC_TIMESTAMP() 忽略当前的@@time_zone 设置

转载 作者:行者123 更新时间:2023-11-29 07:11:57 26 4
gpt4 key购买 nike

我在英国有两台 Linux/MySQL 服务器,两份报告的当前系统时区均为 BST (GMT+1),但我发现 MySQL 的输出存在差异。

以下查询:

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 时是否仍然正确?

最佳答案

我认为发生的事情是,当您启动 MySQL 服务器时,它会填充 @@system_time_zone 变量,但即使它发生变化(例如,由于 DST),它也不会反射(reflect)在变量中.但是,尽管 @@system_time_zone 显示“GMT”,当 MySQL 服务器评估当前日期并且 @@time_zone 是系统时,它会向系统询问日期和DST 会影响它,无论 system_time_zone 变量说什么。所以基本上这里唯一的“问题”是 system_timezone 变量不会自动更改,即使系统的时区发生更改也是如此。

关于MySQL UTC_TIMESTAMP() 忽略当前的@@time_zone 设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3914106/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com