在尝试查询存储为字符串的日期之间的记录时,我遇到了 Athena 问题。
我的 csv 数据集分布在目录中的多个文件中,有一个采用
quote_date
格式的 10/8/2024
列。 我创建了 prices
表,其中 quote_date
作为字符串(不是日期),否则该列将导致空 - 据我所知,因为字符串->日期转换需要 ISO 格式。
我想查询该列上日期之间的记录。
出于某种原因,这工作正常:
select
customer_id,
q_date,
normalized_price
from (
select *, date_parse(quote_date,'%m/%d/%Y') as q_date
from prices
where customer_id is not null
) as tbl
where
customer_id = 435
order by q_date desc
# customer_id q_date normalized_price
1 435 2024-11-19 00:00:00.000 5.62
2 435 2024-11-19 00:00:00.000 5.54
3 435 2024-11-19 00:00:00.000 5.2
...
但由于某种原因,在 q_date 上添加过滤器会中断,并且意外地在
quote_date
列上添加过滤器(?!):
select
customer_id,
q_date,
normalized_price
from (
select *, date_parse(quote_date,'%m/%d/%Y') as q_date
from prices
where customer_id is not null
) as tbl
where
customer_id = 435
AND
date(q_date) > date('2024-11-15')
order by q_date desc
INVALID_FUNCTION_ARGUMENT:格式无效:“QUOTE_DATE” 此查询针对“athena_dtn”数据库运行,除非查询限定。
检查数据,我在
quote_date
值中看不到任何格式错误/预期的字符串格式,所以我真的不知道会出现什么问题。
有什么建议吗?