代码之家  ›  专栏  ›  技术社区  ›  jeangelj

Hadoop Impala:将数据类型整数格式化为日期/时间戳以使用addtime函数

  •  1
  • jeangelj  · 技术社区  · 7 年前

    我在黑斑羚工作,有以下表格:

    customer_id | day_id    | return_day_id
    ABC           20170830    20170923
    BCD           20170830    20170901
    

    如何将其数据类型更改为date,以便在day\u id之后的4天内仅使用return\u day\u id计算不同的customer\u id。是否需要将其转换为date,然后转换为timestamp,以便使用adddate函数?

    1 回复  |  直到 7 年前
        1
  •  3
  •   Julian E.    7 年前

    其中一条评论正确指出的是,您需要使用 unix_timestamp from_unixtime ,但是您不需要使用cast。关于stackoverflow的许多其他问题都遇到了类似的问题,每个问题都试图使用cast,但在许多情况下,最终返回空值或不起作用。

    下面应该以YYYY-MM-dd的格式为您提供所需的时间对象,您也可以选择将hh-MM-ss添加到其中。

    SELECT TBL.day_id, from_unixtime(unix_timestamp(cast (TBL.day_id as string), "yyyyMMdd"))
    
    FROM yourTable as TBL
    
    LIMIT 10 
    

    需要记住的一点是,这会将字符串转换为日期,因此我们在 cast (TBL.day_id as string), "yyyyMMdd"))

    例子:

    20160220->2016-02-20 00:00:00

    您可以在文档中找到更多信息 here .

    希望这有帮助, 朱利安