如何以hadoop.hive.serde2.OpenCSVSerde格式查询Athena字符串到目前为止

Sum*_*mon 3 amazon-s3 amazon-web-services amazon-athena

您好我在AWS Athena中创建了以下架构,以从AWS S3读取csv文件

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')
Run Code Online (Sandbox Code Playgroud)

"createdate"列包含以下值

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
Run Code Online (Sandbox Code Playgroud)

如何查询"createdate"列值作为日期格式?样本查询就像

Select * from axlargetable.mine 
where createdate between '7/03/2017' and '7/31/2017'
Run Code Online (Sandbox Code Playgroud)

谢谢

jen*_*ter 5

我担心OpenCSVSerDe不支持date使用某些非ISO格式解析类型.您可以绕过此行为的唯一方法是将字符串转换为查询中的日期.

在这种情况下,您需要使用该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';
Run Code Online (Sandbox Code Playgroud)