gpt4 book ai didi

mysql - 为什么MySQL CONVERT_TZ 在时区调整后会改变秒数?

转载 作者:行者123 更新时间:2023-11-29 09:23:02 33 4
gpt4 key购买 nike

我正在 MySQL 中存储 UTC 日期时间值。我使用 CONVERT_TZ 处理时区转换,以在数据库中查询/保存与 UTC 之间的本地日期时间。

经过测试,我注意到转换工作方式的这种奇怪的特性。谁能解释一下为什么 MySQL 在使用 -4:00 小时偏移时增加了 23 秒,但在使用等效时区标签时却没有增加 23 秒?

select convert_tz('2009-06-12 01:00:00', 'UTC', '-4:00')
2009-06-11 21:00:23

select convert_tz('2009-06-12 01:00:00', 'UTC', 'US/Eastern')
2009-06-11 21:00:00

我在 Windows XP 笔记本电脑上运行 MySQL 5.0.67-community-nt-log。我从本地托管的 phpMyAdmin 3.1.5 运行查询,我也可以在我自己的 PHP 5.2.8 应用程序中看到它。

与我的 Dreamhost 帐户相比,两个查询都返回正确的日期时间 ('2009-09-06 21:00:00')。他们在 Linux 和 PHP 5.2.6 上运行 MySQL 5.0.45-log。

为什么我自己安装的 MySQL 会出现这种差异?

最佳答案

大概两次安装的时区表是不同的。时区数据存储在mysql数据库的一堆表中。

在unix机器上它们通常是从系统时区文件生成的,但是你的Windows安装可能使用mysql提供的文件:

http://dev.mysql.com/downloads/timezones.html

该数据启用了闰秒。要禁用它们,您可以运行此更新:

update mysql.time_zone set Use_leap_seconds ='N';

然后重新启动服务器。

关于mysql - 为什么MySQL CONVERT_TZ 在时区调整后会改变秒数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/987616/

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