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

SQL日期范围查询:如何根据不同搜索日期获取指定记录?

日期范围重叠的SQL筛选方案

首先,咱们先明确你的两条基础记录:

  • Record 1: from_date='2017-05-15',to_date='2017-06-12'
  • Record 2: from_date='2018-03-20',to_date='2018-04-11'

要筛选出和目标搜索范围有重叠的Record 2,核心逻辑是判断两个日期区间是否存在交集,通用的SQL条件可以覆盖所有重叠场景,咱们针对每个搜索场景具体说明:

场景1:搜索范围 2018-03-01 到 2018-03-31

这个范围和Record 2的区间(3.20-4.11)在3.20-3.31有重叠,对应的SQL查询如下:

SELECT * 
FROM your_table 
WHERE from_date <= '2018-03-31' 
  AND to_date >= '2018-03-01';

逻辑解释:Record 2的起始日期(3.20)晚于搜索开始(3.1)且早于搜索结束(3.31),同时结束日期(4.11)晚于搜索开始,满足区间重叠条件,因此会被筛选出来。

场景2:搜索范围 2018-04-01 到 2018-04-30

这个范围和Record 2的区间在4.1-4.11有重叠,对应的SQL查询:

SELECT * 
FROM your_table 
WHERE from_date <= '2018-04-30' 
  AND to_date >= '2018-04-01';

逻辑解释:Record 2的结束日期(4.11)早于搜索结束(4.30)且晚于搜索开始(4.1),同时起始日期(3.20)早于搜索结束,符合区间重叠要求,会被命中。

场景3:搜索范围 2018-04-01 到 2018-04-03

这个范围完全被Record 2的区间包含,对应的SQL同样适用通用条件:

SELECT * 
FROM your_table 
WHERE from_date <= '2018-04-03' 
  AND to_date >= '2018-04-01';

逻辑解释:搜索的整个区间都在Record 2的日期范围内,自然满足“存在交集”的判断,因此可以准确筛选出Record 2。

总结

这个from_date <= 搜索结束日期 AND to_date >= 搜索开始日期的条件是日期区间重叠判断的通用方案,能覆盖所有可能的重叠情况:

  • 目标区间完全包含搜索区间
  • 搜索区间完全包含目标区间
  • 目标区间和搜索区间部分重叠

不管哪种情况,用这个条件都能精准筛选出有交集的记录,不用单独写多种分支条件,简洁又可靠。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:22:36