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

如何编写SQL查询获取指定日期范围内的缺勤记录

获取指定日期范围的缺勤记录查询方案

问题说明

需要从数据表中筛选出所有与指定日期范围存在重叠的缺勤记录,字段信息:

  • Absence:VARCHAR2类型
  • StartDate、EndDate:DATE类型,无空值

运行时传入绑定变量:startDate和:endDate,需包含所有满足以下条件的记录:缺勤时间段与指定日期范围有交集(包括指定日期范围落在缺勤时间段内的情况)。

原始数据表

AbsenceStartDateEndDate
3006923-DEC-2123-DEC-21
3011229-DEC-2131-DEC-21
12922823-SEP-2223-SEP-22
2404208-OCT-2108-OCT-21
2404329-NOV-2129-NOV-21

示例验证

示例1

绑定变量::startDate = '2021-12-30',:endDate = '2022-09-25'
预期返回结果:

30112   29-DEC-21   31-DEC-21
129228  23-SEP-22   23-SEP-22

示例2

绑定变量::startDate = '2021-10-07',:endDate = '2022-11-30'
预期返回结果:

24042   08-OCT-21   08-OCT-21
24043   29-NOV-21   29-NOV-21

解决方案

使用Oracle SQL的时间段重叠判断逻辑,核心条件是判断两个时间段是否存在交集。对于缺勤时间段[StartDate, EndDate]和指定范围[:startDate, :endDate],交集存在的判定公式为:StartDate <= :endDate AND EndDate >= :startDate。

对应的SQL语句如下(替换你的数据表名为实际表名):

SELECT Absence, StartDate, EndDate
FROM 你的数据表名
WHERE StartDate <= :endDate
  AND EndDate >= :startDate;

逻辑说明

该条件覆盖所有重叠场景:

  • 缺勤时间段完全包含在指定日期范围内
  • 指定日期范围完全包含在缺勤时间段内
  • 缺勤时间段起始在指定范围内、结束在范围外
  • 缺勤时间段结束在指定范围内、起始在范围外
  • 两个时间段完全重合

完全满足需求中“绑定变量日期落在缺勤时间段内也需纳入结果”的要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 21:13:35