2012-07-23 57 views

回答

4

我有这样的一个txt文档记(日期诵读困难):

相交:

Date Range 1 |   |>----------------------<| 
Date Range 2 |     |>------------------------<| 

where Range1Start <= Range2End and Range1End >= Range2Start 

范围1范围2:

Date Range 1 |     |>-------------<| 
Date Range 2 |     |>------------------------<| 


where Range1Start >= Range2Start and Range1End <= Range2End 

范围2在范围1:

Date Range 1 |   |>----------------------<| 
Date Range 2 |     |>-------------<| 


where Range2Start >= Range1Start and Range2End <= Range1End 
2
where UserStart <= TodayEnd and 
     UserEnd >= TodayStart 
0

我知道这个职位是旧的,但我想接受的答案是incomplete.There大部分是至少一个或多个交叉的情况下,并修改上面。

INTERSECT(FIXED)

Date Range 1 |   |>----------------------<| 
Date Range 2 |     |>------------------------<| 
WHERE Range1Start <= Range2Start AND Range1End <= Range2End AND Range1End>=Range2Start 

定影这样允许避免在范围1检测范围2作为交集(这是在接受溶液中的查询结果)

接下来的两是确定的,但没有得到很好的示出

范围1在范围2

Date Range 1 |      |>-------------<| 
Date Range 2 |     |>------------------------<| 

Date Range 1 |     |>------------------------<| 
Date Range 2 |     |>------------------------<| 

WHERE Range1Start >= Range2Start AND Range1End <= Range2End 

范围2在范围1:

Date Range 1 |   |>------------------------<| 
Date Range 2 |    |>-------------<| 

Date Range 1 |   |>------------------------<| 
Date Range 2 |   |>------------------------<| 


WHERE Range2Start >= Range1Start AND Range2End <= Range1End 

最后第二交叉

INTERSECT(右)

Date Range 1 |    |>----------------------<| 
Date Range 2 |  |>------------------------<| 
WHERE Range2Start <= Range1Start AND Range2End <= Range1End AND Range1Start <=Range2End 

取决于你需要什么,我会建议不使用大于(> =)且小于(< =)的原因你还asume,等于期间在这些团体,但取决于你

EQUALS RANGES

Date Range 1 |   |>------------------------<| 
Date Range 2 |   |>------------------------<| 


WHERE Range1Start = Range2Start AND Range1End = Range2End