【问题标题】:How to convert ISO Date to UTC date in Hive如何在 Hive 中将 ISO 日期转换为 UTC 日期
【发布时间】:2013-06-06 07:25:26
【问题描述】:

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

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

【问题讨论】:

  • 嗨,您是否找到任何解决方法来将 mongo_date 与现有的 UDF(如 Hour 或 Minutes)一起使用?因为月、周和日与这些 UDF 一起使用,但在“T”之后它会忽略 hh:mm:ssZ。 tnx

标签: date hive type-conversion unix-timestamp isodate


【解决方案1】:

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并将T使用regexp_replace替换为空格,并在必要时转换为时间戳,不使用unix_timestamp(),这将保留毫秒:

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

结果:

2019-05-17 17:03:09.775

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-03
    • 2011-11-06
    • 2022-01-27
    • 2012-01-16
    • 1970-01-01
    • 2021-04-19
    相关资源
    最近更新 更多