Hadoop的帕拉:格式数据类型整数日期/时间戳记使用更新时间函数
问题描述:
我在因帕拉工作如下表所示:Hadoop的帕拉:格式数据类型整数日期/时间戳记使用更新时间函数
customer_id | day_id | return_day_id
ABC 20170830 20170923
BCD 20170830 20170901
不幸的是,无论是day_id & return_day_id字段INT而不是日期。
如何将其数据类型更改为日期,以便我可以在day_id后的4天内使用return_day_id来计算不同的customer_id。我是否需要将其转换为日期,然后添加时间戳以便使用adddate函数?
答
其中一条意见正确指出,您需要使用unix_timestamp
和from_unixtime
,但是您不需要使用强制转换。在*的许多其他问题遇到类似的问题,每个尝试使用强制转换,但在许多情况下,结束了返回NULL值或不工作。
下面应该给你你需要的时间对象,格式为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找到更多的信息。
希望帮助, 朱利安
+0
非常感谢你,像一个魅力工作 – jeangelj
使用unix_timestamp'和'from_unixtime'和投结果传送给'timestamp'使用'date_add'功能'的组合。 – philantrovert
@philantrovert谢谢 - 我对Impala来说相当陌生,你介意发表一个你如何做这个答案的例子吗?这样我也可以upvote /接受它。非常感谢你 – jeangelj