为什么切换 mysql convert_tz 中相同时间的两个时区的顺序会有所不同?

Why does switching the order of two time zones that are the same time in mysql convert_tz make a difference?

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

这个 returns '2020-07-01 00:29:59' 这很奇怪,因为 EST 和委内瑞拉实际上共享同一时间。

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

这个 returns'2020-06-30 23:59:59' 非常有道理。

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

有什么建议吗?谢谢!

观察到的行为最有可能的解释不正确或已过时time_zone信息。

委内瑞拉卡拉库斯

从“2007-12-01”到“2016-06-01”,时区偏移量为 UTC-04:30

从“2016-06-01”开始,时区偏移量为 UTC-04:00


我们不知道 MySQL 时区表是从服务器上的 zoneinfo 文件还是从下载的包中加载的。

但无论如何,CONVERT_TZ 函数使用的是 mysql 数据库中时区表中的信息。