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

SQL查询时间范围重叠数据无返回结果的原因及正确写法求解

错误原因

你编写的SQL查询逻辑是筛选完全被查询时间范围[2021-10-01 02:00:00, 2021-10-01 08:00:00]包含的oncall记录,要求记录的开始时间晚于等于查询起始时间、结束时间早于等于查询结束时间。
而你给出的示例记录start值为2021-09-24 17:00:00,明显早于查询起始时间2021-10-01 02:00:00,不满足start >= '2021-10-01 02:00:00'的条件,因此不会被返回。

正确的时间范围重叠查询写法

两个时间段存在重叠的通用判定逻辑为:

  • 记录的开始时间 < 查询的结束时间
  • 记录的结束时间 > 查询的开始时间
    如果业务规则中时间段首尾相接也算重叠(比如某记录结束时间和查询起始时间为同一时间就算重叠),可以把符号替换为<=和>=。

对应场景的SQL语句如下:

SELECT *
FROM `oncall`
WHERE `start` < '2021-10-01 08:00:00'
AND   `end` > '2021-10-01 02:00:00';

-- 首尾相接算重叠的版本
-- SELECT *
-- FROM `oncall`
-- WHERE `start` <= '2021-10-01 08:00:00'
-- AND   `end` >= '2021-10-01 02:00:00';

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 10:36:03