我有四个unix时间。两个是“今天”的开始和结束(以当天为准) - 即00:00:00和23:59:59 - 另外两个是用户选择的时间。SQL心智块 - 检查一个时间段是否与另一个时间段重叠
我需要的是一个(TSQL友好的)查询来检查“今天”时间之间的时间段是否与用户时间重叠。谁能帮忙?
我有四个unix时间。两个是“今天”的开始和结束(以当天为准) - 即00:00:00和23:59:59 - 另外两个是用户选择的时间。SQL心智块 - 检查一个时间段是否与另一个时间段重叠
我需要的是一个(TSQL友好的)查询来检查“今天”时间之间的时间段是否与用户时间重叠。谁能帮忙?
我有这样的一个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
where UserStart <= TodayEnd and
UserEnd >= TodayStart
我知道这个职位是旧的,但我想接受的答案是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