给定一个日期范围,查找该范围内重叠的事件
本文关键字:查找 范围内 重叠 事件 范围 日期 一个 | 更新日期: 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
参考