我有一个约会表约会的一些'资源' 我需要做的是查询并返回(对于特定资源)所有日期范围内的免费预约插槽。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