2017-09-08 16 views
1

こんにちはhadoop.hive.serde2.OpenCSVSerde形式で日付にアテナ文字列を照会する方法

CREATE EXTERNAL TABLE IF NOT EXISTS axlargetable.mine (
    createdate string 
) 
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde' 
WITH SERDEPROPERTIES (
    'separatorChar' = ',', 
    'quoteChar' = '\"', 
    'escapeChar' = '\\' 
    ) 
LOCATION 's3://ax-large-table/test/' 
TBLPROPERTIES ('has_encrypted_data'='false') 

「CREATEDATE」欄の保持次の値

AWS S3からcsvファイルを読むためにAWSアテナに、次のスキーマを作成しています
7/01/2017 5:40:05 PM 
7/03/2017 5:40:05 PM 
7/04/2017 5:40:05 PM 
7/05/2017 5:40:05 PM 
7/06/2017 5:40:05 PM 
7/31/2017 5:40:05 PM 
7/31/2017 5:40:05 PM 
7/31/2017 5:40:05 PM 
7/31/2017 5:40:05 PM 

「作成済み」列の値を日付形式として照会するにはどうすればよいですか?

Select * from axlargetable.mine 
where createdate between '7/03/2017' and '7/31/2017' 

おかげ

答えて

2

私はOpenCSVSerDeは、いくつかの非ISOフォーマットでdate種類を解析サポートしていません怖いようなサンプルクエリ。この動作を回避する唯一の方法は、文字列をクエリ内の日付に変換することです。

この場合、parse_date機能を使用する必要があります。

select * from axlargetable.mine 
where date_parse(createdate, '%m/%d/%Y %h:%i:%s %p') 
      between DATE'2017-03-07' and DATE'2017-07-31'; 
+0

こんにちはイェンス、ここで「2017年3月7日には「YYYY-MM-DDという」または「YYYY-ddがあるあなたの答えのためのヨーヨーを感謝し、私は値を取得していますが、私は日付の構造について少し混乱しています-mm '、 – Sumon

+0

申し訳ありませんが私は答えを持って、あなたの助けを大変ありがとうございます – Sumon

+0

はい、コピー/貼り付けエラー、申し訳ありません。 「yyyy-mm-dd」を意味する2017-07-03でなければなりません。 –

関連する問題