如何使用 date 类型 - Amazon Athena
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

如何使用 date 类型

当您使用投影分区键的 date 类型时,您必须指定一个范围。由于在创建 Firehose 传输流之前没有日期数据,您可以使用创建日期作为开始日期。此外,由于您没有将来日期的数据,您可以使用特殊令牌 NOW 作为结束日期。

CREATE TABLE 示例中,开始日期指定为 UTC 时间 2021 年 1 月 1 日午夜。

注意

配置一个与您的数据尽可能匹配的范围,以便 Athena 仅查找现有分区。

在示例表上运行查询时,Athena 将 datehour 分区键上的条件与范围结合使用来生成值。请考虑以下查询:

SELECT * FROM my_ingested_data WHERE datehour >= '2020/12/15/00' AND datehour < '2021/02/03/15'

SELECT 查询中的第一个条件使用在 CREATE TABLE 语句指定的日期范围开始之前的日期。由于分区投影配置没有为 2021 年 1 月 1 日之前的日期指定分区,因此 Athena 仅在以下位置查找数据,并忽略查询中较早的日期。

s3://amzn-s3-demo-bucket/prefix/2021/01/01/00/ s3://amzn-s3-demo-bucket/prefix/2021/01/01/01/ s3://amzn-s3-demo-bucket/prefix/2021/01/01/02/ ... s3://amzn-s3-demo-bucket/prefix/2021/02/03/12/ s3://amzn-s3-demo-bucket/prefix/2021/02/03/13/ s3://amzn-s3-demo-bucket/prefix/2021/02/03/14/

同样,如果查询在 2021 年 2 月 3 日 15:00 之前的日期和时间运行,则最后一个分区将反映当前日期和时间,而不是查询条件中的日期和时间。

如果您想查询最新数据,您可以利用 Athena 不生成未来日期的事实,并仅指定起始 datehour,如以下示例所示。

SELECT * FROM my_ingested_data WHERE datehour >= '2021/11/09/00'