presto sql/athena:在不同日期的时间之间选择

k4ymrczo  于 2021-07-29  发布在  Java
关注(0)|答案(1)|浏览(540)

我有一个包含一系列事件及其时间戳的数据库。
我发现我自己需要选择所有发生在11:00到11:10,21:00到21:05之间的事件。
所以我要做的是从时间戳中提取小时和分钟,然后:

SELECT *
 WHERE (hour = 11 AND minute <= 10)
    OR (hour = 21 AND minute <= 05)

但是,我想知道是否有一种更简单/不那么冗长的方法来实现这一点,例如在日期之间进行查询时:

SELECT *
 WHERE date BETWEEN '2020-07-01' AND '2020-07-05'

我在这里读到这在sqlite中是可行的,我想知道是否也可以在presto中实现。我看了文件,但找不到一个模拟函数,它做什么 time() 在sqlite中没有。

nkhmeac6

nkhmeac61#

您可以使用日期格式功能,例如。 date_format ,然后进行字符串比较:

select *
from mytable
where 
       date_format(mydate, '%H:%i') between '11:00' and '11:09'
    or date_format(mydate, '%H:%i') between '21:00' and '21:04'

请注意,我从上限中减去了一分钟,因为我假设您不想包括最后一分钟。 between '11:00' and '11:09' 给了你一切 11:00:0011:09:59 .

相关问题