You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Presto SQL查询与指定时间窗口存在重叠的记录

Presto 时间区间重叠查询实现

核心判断逻辑

两个时间区间存在重叠的通用判断规则为:区间A的开始时间早于区间B的结束时间,且区间A的结束时间晚于区间B的开始时间。针对本题end_timestamp为NULL代表进程仍在运行的场景,对规则做适配:

  • 若进程结束时间为NULL,等价于进程结束时间为无穷大,只要进程开始时间早于查询窗口结束时间即满足重叠的必要条件
  • 只要两个区间有1秒重合就会命中,符合业务要求

可直接运行的SQL代码

-- 先定义查询时间窗口,修改此处的时间值即可调整查询范围
WITH query_window AS (
    SELECT
        TIMESTAMP '2021-07-13 00:00:00' AS window_start,
        TIMESTAMP '2021-07-13 04:30:00' AS window_end
)
SELECT Id
FROM your_table_name, query_window
WHERE
    -- 进程开始时间早于查询窗口结束时间
    start_timestamp < window_end
    AND (
        -- 进程结束时间晚于查询窗口开始时间,或者进程仍在运行
        end_timestamp > window_start
        OR end_timestamp IS NULL
    )

适配说明

  • 把SQL中的your_table_name替换为你的实际表名即可使用
  • 若需要返回完整的进程记录,把SELECT Id改为SELECT your_table_name.*即可
  • 若业务要求时间点完全重合也视为重叠,可将</>替换为<=/>=,判断逻辑依然生效

内容的提问来源于stack exchange,提问作者Slava

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.12 06:27:03