2017-10-04 102 views
1

我在因帕拉工作如下表所示: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函数?

+1

使用unix_timestamp'和'from_unixtime'和投结果传送给'timestamp'使用'date_add'功能'的组合。 – philantrovert

+0

@philantrovert谢谢 - 我对Impala来说相当陌生,你介意发表一个你如何做这个答案的例子吗?这样我也可以upvote /接受它。非常感谢你 – jeangelj

回答

1

其中一条意见正确指出,您需要使用unix_timestampfrom_unixtime,但是您不需要使用强制转换。在stackoverflow的许多其他问题遇到类似的问题,每个尝试使用强制转换,但在许多情况下,结束了返回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

相关问题