我在 MySQL 中存储 UTC 日期时间值。我使用 CONVERT_TZ 来处理时区转换,以在数据库中查询/保存本地日期时间到/从 UTC。
经过测试,我注意到转换工作方式的这种奇怪特性。谁能解释为什么 MySQL 在使用 -4:00 小时偏移时增加了 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 会有这种差异?