我有一个Redshift数据表,其中所有时间值都存储在CST中,我根据邮政编码(位置)将时间值转换为相应的时区。
虽然我这样做,但我知道所有时间值都在标准时间内,因此我的功能使用是
CASE WHEN **** convert_timezone('CST', 'EST', time_column)
WHEN **** convert_timezone('CST', 'MST', time_column)
....
END
一旦我们进入夏令时,这可能不适用。 我如何处理这个问题,以便在2018年3月和将来不再修改SQL查询?
答案 0 :(得分:1)
请勿使用时区缩写。有些含糊不清,只能参考时区的一个方面。相反,请使用完整的IANA time zone identifier,例如America/Chicago
美国中部时间。
the Redshift docs中解释了这一点:
使用时区名称
如果您使用时区名称指定时区,CONVERT_TIMEZONE会自动调整夏令时(DST)或任何其他当地季节性协议,例如夏令时,标准时间或冬令时。在'timestamp'指定的日期和时间内的时区。例如,'Europe / London'表示冬季的UTC和夏季的UTC + 1。
就问题的“...基于邮政编码”部分而言,请理解并非每个邮政编码都是基于地点的。还有技术任务,海外APO / FPO地址,美国领土和其他边缘案例。此外,某些邮政编码可能跨越多个时区。
如果可能,更好的方法是: