首页 > 解决方案 > 在 AWS Athena 中使用小于运算符不起作用

问题描述

我在 AWS Athena 中遇到了过滤时间戳的问题。我正在使用 Athena 在 S3 中查询镶木地板文件。我运行了一个爬虫将文件的架构包含到 AWSDataCatalogue 中。除非我尝试使用小于运算符,否则一切正常,我无法解释为什么会发生这种情况。我尝试使用 >= 和 <= 过滤特定的日期范围。我已经尝试了下面的示例,并且能够确定小于运算符是问题的原因。这是一个示例,我的目标是过滤特定日期:

select col_1, col_2, ts_col 
from "database"."table" 
where ts_col >= date('2021-04-26') and ts_col <= date('2021-04-26');

这是我尝试运行的查询,但它返回“零记录”和“数据扫描:0.0 KB”。

查询

select col_1, col_2, ts_col 
from "database"."table" 
where ts_col <= date('2021-04-26');

返回所需的输出(2021-04-25 之后的所有数据)。

但如果我试试这个:

select col_1, col_2, ts_col 
from "database"."table" 
where ts_col <= date('2021-04-26');

即使数据库中有此日期之前的记录,查询也不返回任何内容(“零记录”)。看起来在查询执行期间甚至没有扫描数据(“数据扫描:0.0 KB”)。

我已经为 daterange 查询尝试了另一种语法

select col_1, col_2, ts_col 
from "database"."table" 
where ts_col between date('2021-04-26') and date('2021-04-26');

select col_1, col_2, ts_col 
from "database"."table" 
where ts_col between timestamp '2021-04-26 00:00:00.000' 
and timestamp '2021-04-26 23:59:99.999';

但没有任何查询返回“零记录”以外的任何内容,但“扫描数据:0.0 KB”。

我检查了ts_colAWSDataCatalogue 中的数据类型,它被注册为timestamp.

有没有人遇到过这个问题,还是我犯了一个明显的错误?

标签: amazon-web-servicesamazon-athena

解决方案


推荐阅读