2017-10-04 11 views
1

を使用するには、日付/タイムスタンプにフォーマットデータ型の整数私は、次の表にインパラで働いています:Hadoopのインパラ:でaddTime機能

残念ながら
customer_id | day_id | return_day_id 
ABC   20170830 20170923 
BCD   20170830 20170901 

は、両方のday_id & return_day_idフィールドはINTとない日です。

データ型をdateに変更することで、day_idの後の4日以内にreturn_day_idで別個のcustomer_idsを数えることができます。 adddate関数を使用できるように、日付にキャストしてタイムスタンプする必要がありますか?

+1

を助け、 'date_add'機能を使用するためにtimestamp''に結果をキャスト希望。 – philantrovert

+0

@philantrovertありがとうございます - 私はImpalaをかなり新しくしています。答えとしてどのようにするかの例を投稿してもらえますか?このように私はupvote/acceptそれをすることもできます。ありがとうございました – 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のドキュメントを参照してください。

`unix_timestamp`と` from_unixtime`の組み合わせを使用し、 ジュリアン

+0

ありがとうございました – jeangelj

関連する問題