带有时间戳的AWS Athena SQL查询错误

Sum*_*gar 4 sql timestamp presto amazon-athena

我在AWS Athena中有一个表,该表的列名为“ servertime”,数据类型为timestamp。我运行这样的查询

select * 
from table_name 
where servertime between '2018-04-01 00:00:00' and '2018-04-05 23:59:59';
Run Code Online (Sandbox Code Playgroud)

它给了我这个错误: 您的查询具有以下错误:SYNTAX_ERROR:行1:41:'='不能应用于时间戳,varchar(19)

我该如何在雅典娜解决这个问题?从表中获取数据是重要的查询。

jen*_*ter 11

您看到的问题与您之间的状况有关。如果您将时间戳记表示为varchar,则Athena不会将其转换为时间戳记。

为此,您需要传递一个显式的类型转换。

select * from table_name 
where servertime 
   between TIMESTAMP '2018-04-01 00:00:00' 
   and TIMESTAMP '2018-04-05 23:59:59';
Run Code Online (Sandbox Code Playgroud)

  • 另请注意,在 Presto 中(在 Athena 中也是如此),时间戳具有毫秒精度,因此您可能需要使用 `TIMESTAMP '2018-04-05 23:59:59.999'` 作为上限(或者只是普通的 `>= some_day AND < next_day` 代替)。 (3认同)
  • 也许[这个](https://aws.amazon.com/premiumsupport/knowledge-center/query-table-athena-timestamp-empty/)对某人有帮助。就我而言,我必须将时间戳转换为正确的格式(例如“from_iso8601_timestamp(ts)”)才能使条件生效。 (2认同)