我对 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)
将时间戳转换为正确的时区。看看上面提供链接的手册。