AWS Athena时间戳SQL查询错误

29

我在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: 第1行第41列:无法将“=”应用于时间戳和varchar(19)

在Athena中,我该如何解决这个问题?而且这个查询对于从这个表格获取数据非常重要。

1个回答

63

你遇到的问题与你的between条件有关。如果你将时间戳仅表示为varchar,Athena将不会将其转换为时间戳。

要实现这一点,你需要进行显式类型转换。

select * from table_name 
where servertime 
   between TIMESTAMP '2018-04-01 00:00:00' 
   and TIMESTAMP '2018-04-05 23:59:59';

2
请注意,在Presto(因此也适用于Athena),时间戳具有毫秒精度,因此您可能希望将TIMESTAMP '2018-04-05 23:59:59.999'用作上限(或仅使用普通的>=某一天且<下一天)。 - Piotr Findeisen
2
也许对某些人有帮助。在我的情况下,我必须将时间戳转换为正确的格式(例如 from_iso8601_timestamp(ts))才能使条件起作用。请参考此链接 - Oleg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接