我想查找時間衝突,但它不會爲以下記錄提供正確的結果。 我想返回時隙的真實時間 - 「t1.starttime到t2.endtime」,因爲此時隙與「t2.starttime和t2.endtime」衝突,因爲7到12時間覆蓋了8到11.30的某些時間。如何在SQL查詢中查找時隙衝突
t1.StartTime t1.EndTime t2.StartTime t2.EndTime ---------------- ---------------- ---------------- ---------------- 07:00:00.0000000 12:00:00.0000000 08:00:00.0000000 11:30:00.0000000
我執行下面的查詢,但它不給我結果。
SELECT
count(1)
FROM
t1 INNER JOIN t2 ON
CAST(t1.StartTime as TIME)
BETWEEN CAST(t2.StartTime as TIME)
AND CAST(t2.EndTime as TIME) OR CAST(t1.EndTime as TIME)
BETWEEN CAST(t2.StartTime as TIME)
AND CAST(t2.EndTime as TIME)
您是否搜索過:[tsql]或[sql-server]或[sql-server-2008]或[sql-server-2008-r2]或[sql-server-2005]重疊範圍 – HABO
如果您真的嘗試按照你自己的查詢,你會注意到7不在8到11:30之間,而12也不是。所以當然你的條件沒有得到滿足。請參閱戈登的正確邏輯答案。通常有助於實際拿一張紙,並嘗試用線條重疊的時間段來描繪問題。繪製所有可能的重疊,並查看每種情況下每行的開始和結束之間可以找到的邏輯關係。 – oerkelens
你應該閱讀這篇文章(http://sqlblog.com/blogs/aaron_bertrand/archive/2011/10/19/what-do-between-and-the-devil-have-in-common.aspx) 。 – Zane