给定输入日期范围,例如2015年11月1日 - 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服务器会很棒。基本上给定日期范围,找到在该范围内重叠的事件。
我知道我可以"蛮力"有一些代码,只是想知道我是否错过了更优雅的东西?
答案 0 :(得分:2)
您可以使用StartA <= EndB AND EndA >= StartA
来获取重叠日期:
DECLARE @startDate DATE = '20151101',
@endDate DATE = '20151115'
SELECT *
FROM CalendarEvents
WHERE
eventStart <= @endDate
AND eventEnd >= @startDate