普雷斯托from_unixtime功能是否正确?



我对 bigint 进行时间戳查询,值为"1494257400">

我将使用 presto 查询 但是 Presto 不是收集有关 from_unixtime(( 函数的结果。

蜂巢版本。

select from_unixtime(1494257400) result : '2017-05-09 00:30:00'

普雷斯托版本。

块引用

select from_unixtime(1494257400) result : '2017-05-08 08:30:00'

Hive 给出了一个收集结果,但 Presto 不是收集结果。 我该如何解决?

prestofrom_unixtime返回 UTC 的日期,而来自 Hive 的日期返回本地时区的日期。

根据 https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF,from_unixtime

从 unix 纪元转换秒数 (1970-01-01 00:00:00 UTC( 到表示该时刻时间戳的字符串 当前系统时区,格式为"1970-01-01 00:00:00"。

Hive 的输出不是那么好,因为 ISO 格式的字符串应该显示 GMT 数据,如果它们有任何不是 GMT+00 的数据。

使用 Hive,可以使用to_utc_timestamp({any primitive type} ts, string timezone)将时间戳转换为正确的时区。看看上面提供链接的手册。

最新更新