【问题标题】:Why does switching the order of two time zones that are the same time in mysql convert_tz make a difference?为什么在 mysql convert_tz 中切换两个相同时间的时区的顺序会有所不同?
【发布时间】:2017-02-08 03:46:18
【问题描述】:
SELECT CONVERT_TZ('2020-06-30 23:59:59','America/Caracas','US/Eastern');

这会返回“2020-07-01 00:29:59”,这很奇怪,因为 EST 和委内瑞拉实际上是同一时间。

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

这将返回“2020-06-30 23:59:59”,这很有意义。

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

有什么建议吗?谢谢!

【问题讨论】:

  • 夏令时。 am/car 不遵守夏令时,而 us/eastern 遵守。
  • 那么第二个语句不应该也显示时间差吗?
  • @MarcB:2016 年,委内瑞拉加拉加斯观察到一个半小时(+00:30:00)的时间偏移,从 2016-06-01 02:30:00 生效。在此之前的最后一次更改是在 2007 年。对观察到的行为最可能的解释是时区表中的不稳定。尤其是关于未来的日期。
  • 那么可能是一个过时/过时/错误的 TZ 表。政客们喜欢搞乱这样毫无意义的事情,但这会导致很多系统的 tz 信息过时。

标签: mysql timezone convert-tz


【解决方案1】:

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

委内瑞拉加拉库斯

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

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


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

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

【讨论】:

  • 非常感谢!这样就可以解释了!
猜你喜欢
  • 2016-07-19
  • 1970-01-01
  • 2021-09-22
  • 2013-07-16
  • 2016-10-15
  • 1970-01-01
  • 1970-01-01
  • 2020-07-19
  • 2017-05-07
相关资源
最近更新 更多