我有下面的一組日期(DD/MM/YYYY)匹配我的數據庫事件之間:計算丟失的日期範圍和重疊的日期範圍兩個日期
eventId startDate endDate 1 02/05/2009 10/05/2009 2 08/05/2009 12/05/2009 3 10/05/2009 12/05/2009 4 21/05/2009 21/05/2009 5 25/05/2009 NULL 6 01/06/2009 03/06/2009
事件有開始和結束日期(次數無關緊要),並且NULL endDate意味着事件仍在進行中。
我想確定的是兩個任意日期之間的日期範圍,其中a)沒有事件和b)事件重疊。
所以對於01/04/2009的輸入日期範圍 - 30/06/2009我期望具有以下結果:
no event: 01/04/2009 - 01/05/2009 overlap : 08/05/2009 - 10/05/2009 overlap : 10/05/2009 - 12/05/2009 no event: 13/05/2009 - 20/05/2009 no event: 22/05/2009 - 24/05/2009 overlap : 01/06/2009 - 03/06/2009
注意,在兩個相鄰的重疊範圍將是可接受的,因爲一個結果。
任何人都可以請幫我用SQL算法來生成這個結果集?
編輯:目標平臺數據庫是SQL Server 2005.日期記錄爲10/05/2009 00:00:00,這意味着該事件在10/5/2009 00:00:00之間結束了一段時間, 10/5/2009 23:59:59。開始日期也是如此。輸入日期範圍因此也可以理解爲01/04/2009 00:00:00 - 30/06/2009 23:59:59。
哪個數據庫平臺(S)將您運行此查詢? – 2009-06-22 07:04:44