hadoop impala:将数据类型integer格式化为date/timestamp以使用addtime函数

olhwl3o2  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(328)

我在 Impala 工作,有下表:

customer_id | day_id    | return_day_id
ABC           20170830    20170923
BCD           20170830    20170901

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

wrrgggsh

wrrgggsh1#

其中一条评论正确地指出,您需要使用 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
您可以在这里的文档中找到更多信息。
希望有帮助,朱利安

相关问题