我有一個約會表約會的一些'資源' 我需要做的是查詢並返回(對於特定資源)所有日期範圍內的免費預約插槽。tsql intersect之間的2個日期時間記錄集
我以爲最好的方法來處理這將是生成一個臨時表的可能約會時間(因爲約會的長度可能是30/60/90分鐘 - 約會的長度將爲查詢指定)。然後選擇這兩個記錄集的相交點。即所有這些 - 在日期範圍內 - 約會表中沒有約會。從而返回該資源的所有可能的約會。
或者可能只是再次生成可能的約會日期時間的記錄,然後除了實際約會已經預訂..?
除非有人可以建議一個更容易的選項。
還不能完全確定如何生成候選條件的表,即有記錄表2010-12-08 09:00, 2010-12-08 10:00,
等(1個小時預約)...
什麼想法?
編輯:對符合候選條件一個模糊的想法...
DECLARE @startDate DateTime
DECLARE @EndDate DateTime
set @startDate = '2010-12-08 09:00'
set @endDate = '2010-12-11 09:00';
with mycte as
(
select cast(@startDate as datetime) DateValue
union all
select dateadd(mi,30,DateValue)
from mycte
where DateValue <= @endDate
and datepart(hh, dateadd(mi,30,DateValue)) Between 9 AND 16
)
select DateValue
from mycte
虐待有一個閱讀,謝謝 – nat 2010-12-08 13:59:17