いくつかの「リソース」の予定を含む予定テーブルがあり、それをクエリして、(特定のリソースについて) 日付範囲内のすべての空き予定スロットを返す必要があります。
これにアプローチする最善の方法は、可能な予定時間の一時テーブルを生成することであると考えていました (予定の長さは 30/60/90 分である可能性があるため、予定の長さはクエリに対して指定されます)。これらの 2 つのレコードセットの交差。つまり、予定テーブルに予定がない日付範囲全体のすべてです。したがって、そのリソースのすべての可能な予定を返します。
または、おそらく-再び-可能な予定の日時のレコードを生成し、実際にすでに予約されている予定を除いて..?
? もちろん、誰かがより簡単なオプションを提案できない限り。
また、可能なテーブル、つまりレコードを含むテーブルなどを生成する方法も完全にはわかりません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