2012-10-11 201 views
12

我想知道是否有一種方法在SQL(t-sql首選)來確定日期範圍是否落在另一個日期範圍之間。確定日期範圍是否落在另一個日期範圍之間 - sql

我舉例的目的: daterange1 =我有一個定義的日期範圍,日期是1/1/2012 - 2012/1/5 daterange2 =我有兩個其他日期的工作,可以說1/3/2012年和2012/1/4

我想有這一個CASE語句中使用這樣的事情

CASE 
    WHEN daterange1 = 0 then result1 
    WHEN daterange2 falls within daterange1 then result2 
    END as datestuff 

這可能在SQL?我真的很難在這一個,我知道如何確定一個單一的日期是否在一個範圍之間,但如何在一個日期範圍內完成呢?答案並不一定需要在CASE聲明中,但它是首選。

回答

23

你怎麼能得到daterange1 = 0,因爲它是一個範圍,即2個值?

重疊日期的正確測試

CASE WHEN @range1start <= @range2end 
     and @range2start <= @range1end THEN 1 ELSE 0 END 

如果你的意思是daterange2必須daterange1內全部下跌,那麼

CASE WHEN @range1start <= @range2start 
     and @range2end <= @range1end THEN 1 ELSE 0 END 
+0

謝謝你,我以爲它必須是這樣的東西,只是無法弄清楚 – wondergoat77

+0

第二個正是我所需要的,再次感謝 – wondergoat77

+0

非常感謝。感謝。 – amilaishere

-1

SELECT * 在t 地方(開始日期和closedate之間beginningdate 或在開始日期和結束日期之間結束日期 或(開始日期<開始日期和結束日期> =關閉));