秘密ZULU时间改为PST

问题描述 投票:0回答:1

我试图将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。

请帮助我。

hive hql hiveql
1个回答
0
投票

最好使用FROM_UTC_TIMESTAMP,因为UNIX_TIMESTAMP返回的是秒,你将失去时间戳的毫秒部分。

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

有时可能因为 "T "和 "Z "的原因,我们的结果会失真。在这种情况下,我们可以使用。

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

2
投票

Escape T, Z 字符串中。注意使用双引号的模式和 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 因为你正在匹配完整字符串的模式。

© www.soinside.com 2019 - 2024. All rights reserved.