gpt4 book ai didi

json - HQL返回ISO时间戳

转载 作者:行者123 更新时间:2023-12-02 20:43:25 27 4
gpt4 key购买 nike

我们的Hive表如下所示:

CREATE TABLE IF not EXISTS xxxx
(
`Timestamp` Timestamp
)
ROW format serde 'org.apache.hive.hcatalog.data.JsonSerDe' WITH SERDEPROPERTIES ('timestamp.formats'="yyyy-MM-dd'T'HH:mm:ss.SS'Z',yyyy-MM-dd'T'HH:mm:ss.SSS'Z',yyyy-MM-dd'T'HH:mm:ss.SSSS'Z'")

和json数据如下:
{.....,"TimeStamp":"2016-01-26T13:50:00.422Z",....}

由于有了 SERDEPROPERTIEStimestamp.formats,hive能够将json数据处理为Timestamp格式。这很棒,因为我们可以使用字符串时间戳,因为它是 Timestamp,所以我们可以使用时间戳的UDF。

但是我们也想将此数据反序列化为ISO时间格式-回到原始的 "2016-01-26T13:50:00.422Z"。说了这么多,我们需要做的是:
SELECT * FROM xxx

并获取ISO格式的时间:
2016-01-26T13:50:00.422Z

我们要避免在 someUDF(Timestamp) b / c中使用 HQL,我们需要返回所有字段(为此使用星号)。甚至有可能这样做吗?

最佳答案

这会将纪元转换回iso格式,但会损失小数秒的准确性。希望能帮助到你。谢谢。

Query:  select concat(regexp_replace(cast(from_unixtime(cast(946713612 as bigint), 
'yyyy-MM-dd HH:mm:ss.SSS') as string),' ','T'),'Z');

Result: 2000-01-01T03:00:12.000Z

关于json - HQL返回ISO时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48955039/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com