给定一个日期范围,查找该范围内重叠的事件

本文关键字:查找 范围内 重叠 事件 范围 日期 一个 | 更新日期: 2023-09-27 18:19:54

给定一个输入日期范围,例如2015年1月11日至2015年11月15日,确定在该给定日期范围内发生哪些事件(CalendarEvents)的最有效方法是什么。

event         eventStart     eventEnd
==================================
expo          10/25/2015    11/4/2015       //This should be selected.
concert       11/4/2014      11/5/2015      //This should be selected.
exhibit       11/15/2015     12/1/2015      //this should be selected.
display       10/26/2015    10/29/2015      //this should NOT be selected.

Linq或SQL服务器会很棒。基本上给定一个日期范围,查找该范围内重叠的事件。

我知道我可以用一点代码"蛮力",只是想知道我是否错过了更优雅的东西?

给定一个日期范围,查找该范围内重叠的事件

您可以使用StartA <= EndB AND EndA >= StartA来获取重叠日期:

DECLARE @startDate  DATE = '20151101',
        @endDate    DATE = '20151115'
SELECT * 
FROM CalendarEvents
WHERE
    eventStart <= @endDate
    AND eventEnd >= @startDate

SQL Fiddle

参考