2016-09-29 51 views
1
SELECT CONVERT_TZ('2020-06-30 23:59:59','America/Caracas','US/Eastern'); 

这返回'2020-07-01 00:29:59'这很奇怪,因为EST和委内瑞拉实际上共享同一时间。为什么在convert_tz中同时切换两个时区的顺序会有所作为?

SELECT CONVERT_TZ('2020-06-30 23:59:59','US/Eastern','America/Caracas'); 

这将返回'2020-06-30 23:59:59',这是非常有意义的。

为什么第一个查询没有返回正确的时间,而第二个查询却没有返回正确的时间?

有什么建议吗?谢谢!

+0

夏令时。当我们/东部时,am/car不遵守DST。 –

+0

那么它是否应该不会在第二条语句中显示时间差? – user6655061

+0

@MarcB:2016年,委内瑞拉加拉加斯观察到一个半小时的时间偏移(+00:30:00),2016-06-01 02:30:00有效。在此之前的最后一次更改是在2007年。对于观察到的行为的最可能的解释是在时区表中令人不快。特别是关于未来的日期。 – spencer7593

回答

0

观察到的行为最可能的解释是错误的或过时的time_zone信息。

对于Caracus,委内瑞拉

从 '2007-12-01' 到 '2016年6月1日',时区偏移是UTC-04:30

开始 '2016年6月1日',区偏移量为UTC-04:00


我们不知道是否MySQL的时区表是从服务器上的时区信息文件加载,或从下载的软件包。

但无论哪种方式,它都是由正在由CONVERT_TZ函数使用的mysql数据库的时区表中的信息。

+0

非常感谢!这会解释它! – user6655061

相关问题