带有时间戳的 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 - 如何参数化 SQL 查询

AWS athena sql 查询以获取不同的数据

AWS Athena (Presto) DISTINCT SQL 查询中的重复结果?

从 Apache Zeppelin 对 AWS Athena 运行时,SQL 查询将永远运行

Spark SQL 查询以获取在 AWS S3 中存储为 CSV 的 Athena 表的最后更新时间戳

AWS Athena JDBC查询超时