将ZULU时间转换为PST

Covert ZULU time to PST

我正在尝试将 yulu 格式的 start_time 转换为 pst。 Start_time 示例:2020-02-04T04:36:42:211Z

from_unixtime(unix_timestamp(sub string(start_time,1,17),'yyyy-MM-ddThh:mm:ss.SSSZ),'yyyy-MM-dd hh:mm:ss)

但我得到的输出为 NULL。

请帮忙。

转义字符串中的TZ。请注意对模式使用双引号,并且 TZ 使用单引号进行转义。

select from_unixtime(unix_timestamp('2020-02-04T04:36:42:211Z',"yyyy-MM-dd'T'HH:mm:ss:SSS'Z'")
                     ,'yyyy-MM-dd HH:mm:ss')

此外,您不需要 substring,因为您正在匹配完整字符串的模式。

最好使用 FROM_UTC_TIMESTAMP 因为 UNIX_TIMESTAMP returns 秒,您将丢失时间戳的毫秒部分。

FROM_UTC_TIMESTAMP(UNIX_TIMESTAMP(2020-02-04T04:36:42:211Z, "yyyy-MM-dd'T'hh:mm:ss.SSS'Z'"), 'PST')

有时可能因为 "T" 和 "Z" 我们的结果得到 distorted.In 这种情况我们可以使用:

from_utc_timestamp(CONCAT(substring('2020-02-04T04:36:42:211Z',1,10)," ",substring('2020-02-04T04:36:42:211Z',12,12)),'PST')