2017-10-04 113 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

相關問題