在转换时区时要照顾日光节省时间



我有一个红移数据表,其中所有时间值都存储在CST中,并且我根据邮政编码(位置)将时间值转换为相应的时区。

当我这样做时,我知道所有时间值都是在标准时间中,因此我的功能使用

CASE WHEN **** convert_timezone('CST', 'EST', time_column)  
     WHEN **** convert_timezone('CST', 'MST', time_column)
....
END

一旦我们进入日光节省时间,这可能不适用。我如何处理这一点,以免在2018年3月和将来再次修改SQL查询?

不要使用时区缩写。它们有些模棱两可,只能指时区的一个方面。相反,使用完整的IANA时区标识符,例如America/Chicago For我们中心时间。

这在红移文档中很好地解释了:

使用时区名称

如果您使用时区名称指定时区,则convert_timezone会自动调整夏令时(DST)或任何其他本地季节性协议,例如夏季时间,标准时间或冬季时间,这是有效的在"时间戳"指定的日期和时间期间的那个时区。例如,"欧洲/伦敦"在冬季代表UTC,夏季代表UTC 1。

至于"基于邮政编码"的" ...一部分问题,请理解并非每个邮政编码都是基于局部性的。还有技术任务,海外APO/FPO地址,美国领土和其他边缘案件。此外,某些邮政编码可能跨越一个时区。

最好的方法是:

  • 获得纬度/经度坐标的近似值 - 根据您的源数据,使用多种技术。例如,地理编码API可以进行街道地址并给出lat/lon。
  • 然后使用此处列出的一种技术来确定该位置的时区标识符。

相关内容

  • 没有找到相关文章

最新更新