带有时间戳的 AWS Athena SQL 查询错误
Posted
技术标签:
【中文标题】带有时间戳的 AWS Athena SQL 查询错误【英文标题】:AWS Athena SQL Query Error with timestamp 【发布时间】:2019-01-16 13:37:30 【问题描述】:我在 AWS Athena 中有一个表,其中包含名为“servertime”的列,其数据类型为时间戳。我运行这样的查询
select *
from table_name
where servertime between '2018-04-01 00:00:00' and '2018-04-05 23:59:59';
它给了我这个错误: 您的查询存在以下错误: SYNTAX_ERROR: line 1:41: '=' 不能应用于时间戳,varchar(19)
如何在 Athena 中解决此问题?从这个表中获取数据是很重要的查询。
【问题讨论】:
【参考方案1】:您看到的问题与您的中间条件有关。如果您将时间戳显示为 varchar,则 Athena 不会将其转换为时间戳。
为此,您需要传递显式类型转换。
select * from table_name
where servertime
between TIMESTAMP '2018-04-01 00:00:00'
and TIMESTAMP '2018-04-05 23:59:59';
【讨论】:
另请注意,在 Presto 中(在 Athena 中也是如此),时间戳具有毫秒精度,因此您可能希望使用TIMESTAMP '2018-04-05 23:59:59.999'
作为上限(或者只是普通的 >= some_day AND < next_day
)。跨度>
也许this 对某人有帮助。就我而言,我必须将时间戳转换为正确的格式(如from_iso8601_timestamp(ts)
)才能使条件生效。以上是关于带有时间戳的 AWS Athena SQL 查询错误的主要内容,如果未能解决你的问题,请参考以下文章
AWS Athena (Presto) DISTINCT SQL 查询中的重复结果?
从 Apache Zeppelin 对 AWS Athena 运行时,SQL 查询将永远运行