转换时区时应注意夏令时 [英] Taking care of daylight saving time when converting timezone

查看:36
本文介绍了转换时区时应注意夏令时的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

执行此操作时,我了解到所有时间值都采用标准时间,因此我的函数使用情况

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

一旦我们进入夏令时,这可能不适用。如何处理此问题,以便在2018年3月及以后不会再次修改SQL查询?

推荐答案

不要使用时区缩写。有些模棱两可,只能指时区的一个方面。而应使用完整的IANA time zone identifier,例如America/Chicago表示美国中部时间。

这在the Redshift docs

中有很好的解释

使用时区名称

如果使用时区名称指定时区,CONVERT_TIMEZONE会根据夏令时(DST)或任何其他本地季节性协议(如夏季时间、标准时间或冬季时间)自动进行调整,这些协议在"timeStamp"指定的日期和时间期间对该时区有效。例如,‘Europe/London’表示冬季的UTC和夏季的UTC+1。

就您问题中的邮政编码部分而言,请了解并不是每个邮政编码都是基于地区的。还有技术任务、海外APO/FPO地址、美国领土和其他边缘案例。此外,某些邮政编码可能跨越多个时区。

如果可能,更好的方法是:

  • 获取纬度/经度坐标的近似值-根据源数据使用各种技术。例如,地理编码API可以采用街道地址并提供经度/纬度。
  • 然后使用其中一种技术listed here确定该位置的时区标识符。

这篇关于转换时区时应注意夏令时的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆