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

MySQL查询开始时间落在指定时间区间内的记录SQL写法

MySQL时间区间匹配查询实现

基础信息

  • 目标表字段:id、Start Time、End Time,字段存储类型为TIME
  • 样例数据:
    • id=1:时段06:30:00-07:00:00
    • id=2:时段06:45:00-07:15:00
    • id=3:时段13:15:00-14:00:00
    • id=4:时段09:30:00-10:15:00
  • 查询区间:05:00:00 - 10:00:00
  • 预期规则:返回所有和查询区间有重叠的记录,完全不重叠的记录过滤,对应预期返回id=1、2、4,过滤id=3。

核心判断逻辑

两个时间区间存在重叠的通用判断规则为:记录的开始时间早于查询区间的结束时间,且记录的结束时间晚于查询区间的开始时间。
该规则可覆盖所有符合要求的场景:

  • 记录时段完全落在查询区间内(如id=1)
  • 记录结束时间超出查询区间上限,但开始时间落在区间内(如id=2、id=4)
  • 记录开始时间早于查询区间下限,但结束时间落在区间内(若存在这类数据也可正常匹配)
  • 记录时段完全落在查询区间之前/之后(如id=3,开始时间晚于查询区间结束时间),会被直接过滤

SQL实现代码

-- 定义查询区间参数,可按需修改
SET @query_start = '05:00:00';
SET @query_end = '10:00:00';

SELECT id, `Start Time`, `End Time`
FROM 替换为你的实际表名
WHERE
  `Start Time` < @query_end
  AND `End Time` > @query_start;

注意:由于字段名Start Time、End Time包含空格,SQL中必须用反引号包裹字段名,否则会触发语法错误。

结果校验

执行上述语句后,返回结果与预期完全一致:

  • 正常返回id=1、id=2、id=4三条匹配记录
  • id=3因开始时间13:15:00晚于查询区间结束时间10:00:00,不满足匹配条件,被正确过滤

内容的提问来源于stack exchange,提问作者Nazmul Hasan Sheum

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 19:09:23