aws athena-查询特定时间段

5cnsuln7  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(351)

我有一个数据,它有两个基于时间的列-日期,小时(其他列存在)。我的目标是读取特定时间段的数据。
数据:

date         hour
22-06-20      0
22-06-20      1
..            ..
23-06-20      23

目标:在22-06-20第4小时到23-06-20第4小时之间读取数据。
我的问题是:

select date, hour from mytable where
date >= date("22-06-20")
and hour >= 4;

以上将给我提供从22-06-20第4小时到23-06-20第23小时的数据。但是如何在20年6月23日的第4个小时阻止它。
我已经在上面展示了一个硬编码的例子,但是我正在尝试的是实时的,因为我的表每小时更新一次。

select date, hour from mytable  where
date >= date(current_timestamp - interval '25' hour)
and hour >= hour(current_timestamp - interval '25' hour)

为什么我要做-25小时是我想要最后24小时的数据,不包括最后一个小时,也就是说现在是20年6月23日的第10个小时。我要从20月22日到20月23日的数据。尝试解决上述问题也会有助于我做到这一点。

lawou6xi

lawou6xi1#

假设你的日期是一个时间戳:

where date >= timestamp '2020-06-20 04:00:00' and
      date < timestamp '2020-06-23 04:00:00'

编辑:
哦,我明白了。它们在两个不同的列中。所以你可以:

where (date = '2020-06-20' and hour >= 4) or
      (date > '2020-06-20' and date < '2020-06-23') or
      (date = '2020-06-23' and hour < 4)

相关问题