关于检查多个日期之间记录的最佳实践的建议

时间:2011-02-01 11:06:36

标签: sql asp.net-mvc linq pseudocode

我希望找到最有效的伪代码,以达到以下条件:

  • 我有一个“事件”,它有一个开始和结束日期(S1,S2)
  • 我试图找出这是否发生在特定的时间范围内(D1,D2)
  • 如果活动仅持续一天,则不会有结束日期
  • 我只想在查询中出现一次事件。

如果有人能够帮助解决此类查询背后的伪代码,我将不胜感激。

它可以在LINQ查询中使用。

2 个答案:

答案 0 :(得分:1)

如果将(S1,S2)定义为(S1,S2 ?? S1),则

如果符合以下条件,

将满足条件:

  S2 >= D1 && D2 >= S1




        S1     S2
        |------|  
D1                     D2
|-----------------------|

            S1                  S2
            |-------------------|  
    D1                     D2
    |-----------------------|

    S1                  S2
    |-------------------|  
              D1                       D2
              |-----------------------|


    S1                        S2
    |-------------------------|  
              D1      D2
              |-------|

但这些条件不会得到满足:

        S1                  S2
        |-------------------|  
D1  D2
|----|

S1   S2
|-----|  
          D1                       D2
          |-----------------------|

答案 1 :(得分:0)

要检查特定时间段内的事件是否使用

Event.Start < TimeFrame.End && (Event.End == null) ? Event.Start.AddDays(1) : Event.End > TimeFrame.Start