4

我有如下 JSON 数据:我需要将该日期转换mongo_date为 utc 时间戳,以使用 map reduce 每年、每月、每周按照时间线示例分析配置单元中的数据

{
    "_id" : ObjectId("51ac77050e9edcdad271ce2d"),
    "company" : null,
    "date" : "19760224",
    "mongo_date" : ISODate("1976-02-24T00:00:00Z")
4

1 回答 1

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"); 

结果:

2017-01-01 05:01:10

更新。此方法是使用空格删除Z和替换,必要时转换为时间戳,不使用,这将保留毫秒:Tregexp_replaceunix_timestamp()

select timestamp(regexp_replace("2019-05-17T17:03:09.775Z", '^(.+?)T(.+?)Z$','$1 $2'));

结果:

2019-05-17 17:03:09.775
于 2014-05-07T14:14:35.080 回答