Har*_*ari 4 hive date type-conversion unix-timestamp isodate
我有如下 JSON 数据:我需要将该日期转换mongo_date为 utc 时间戳,以根据时间线示例每年、每月、每周使用 map reduce 分析 hive 中的数据
{
"_id" : ObjectId("51ac77050e9edcdad271ce2d"),
"company" : null,
"date" : "19760224",
"mongo_date" : ISODate("1976-02-24T00:00:00Z")
Run Code Online (Sandbox Code Playgroud)
lef*_*oin 10
Hive 理解这种格式:'yyyy-MM-dd HH:mm:ss.SSS'.
使用unix_timestamp()转换到从1970-01-01过去了秒,然后使用from_unixtime()转换为正确的格式:
select from_unixtime(UNIX_TIMESTAMP("2017-01-01T05:01:10Z", "yyyy-MM-dd'T'HH:mm:ss'Z'"),"yyyy-MM-dd HH:mm:ss");
Run Code Online (Sandbox Code Playgroud)
结果:
2017-01-01 05:01:10
Run Code Online (Sandbox Code Playgroud)
更新。此方法是删除Z并替换T为空间 usingregexp_replace并在必要时转换为时间戳,不使用unix_timestamp(),这将保留毫秒:
select timestamp(regexp_replace("2019-05-17T17:03:09.775Z", '^(.+?)T(.+?)Z$','$1 $2'));
Run Code Online (Sandbox Code Playgroud)
结果:
2019-05-17 17:03:09.775
Run Code Online (Sandbox Code Playgroud)