【问题标题】:AWS Athena SQL Query Error with timestamp带有时间戳的 AWS Athena SQL 查询错误
【发布时间】: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 中解决此问题?从这个表中获取数据是很重要的查询。

【问题讨论】:

    标签: sql timestamp amazon-athena presto


    【解决方案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))才能使条件生效。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-12
    • 2021-11-02
    • 2019-03-14
    • 2013-04-20
    • 1970-01-01
    • 2020-07-10
    • 1970-01-01
    相关资源
    最近更新 更多