如何获取特定日期的日历活动?

时间:2011-11-01 21:23:42

标签: c# .net sql datetime

我有一个带有StartDateTime和EndDateTime的日历事件。这些事件作为记录存储在数据库中。我希望获得特定日期的所有活动。有很多场景可以立即浮现在脑海中。

鉴于特定日期12/01/2011,我希望得到的事件发生在12/01/2011(从凌晨12:00:00到晚上11:59:59)。

所以我需要选择:

  1. StartDateTime和EndDateTime属于12/01/2011 12:00:00 AM和12/01/2011 11:59:00 PM的事件

  2. 第二天的事件。那就是StartDateTime是在2011年12月1日晚上11:59:59之前,但EndDateTime是将来的某个时间

  3. EndDateTime于12/01/2011但在晚上11:59:59之前且其StartDateTime在12/01/2011 12:00:00 AM之前的事件

  4. 跨越多天的事件。那就是StartDateTime是在12/01/2011 12:00:00 AM之前,EndDateTime是在12/01/2011 11:59:59 PM之后

  5. 我可能会错过其他场景。我有一种感觉,这不是一个原始问题,并且有一些方法可以完全满足我的需要。有没有标准的方法来选择这些事件?

2 个答案:

答案 0 :(得分:1)

我认为你的4个案例分解为单个语句(伪代码)

if ((StartDate <= InputDate) && (EndDate >= InputDate))

答案 1 :(得分:0)

在结合Jason和X-Zero提出的解决方案之后,这就是我所拥有的。

DateTime inputDateStart = inputDate;
DateTime beginningOfNextDay = inputDate.AddDays(1);


IQueryable<MyEvent> inputDayEvents = (<collection of all the events here>)
.Where(e => e.StartDateTime < beginningOfNextDay && e.EndDateTime >= inputDateStart)

以下是查询的直观表示。

enter image description here