【发布时间】:2015-10-29 04:50:12
【问题描述】:
我正在使用
declare @starttime datetime = '2015-10-28 10:00',
@endtime datetime = '2015-10-28 12:00',
@interval int = 30
我想从表中检索这些值,而不是将它们声明为静态值。我有一个单独的表,其中包含这 3 个值(Startdate、Enddate、interval)。
我尝试创建一个临时表,然后将值插入其中,但如果我想在进一步的查询中使用这些值,命名约定将无法正常工作。我的整个查询是这样的,在这我希望从数据库中获取 startdate、enddate、interval 而不是静态的。
create table #booking (start datetime, [end] datetime)
insert into #booking values
('2015-10-28 08:00','2015-10-28 08:30'),
('2015-10-28 10:00','2015-10-28 10:30'),
('2015-10-28 10:30','2015-10-28 11:00')
declare @starttime datetime = '2015-10-28 08:00',
@endtime datetime = '2015-10-28 12:00',
@interval int = 30,
@slots int
select @slots = datediff(minute, @starttime, @endtime)/@interval
SELECT TOP (@slots) N=IDENTITY(INT, 1, 1)
INTO #Numbers
FROM master.dbo.syscolumns a CROSS JOIN master.dbo.syscolumns b;
select
dateadd(minute,((n-1)*@interval),@starttime) as start,
dateadd(minute,(n*@interval),@starttime) as [end]
into
#slots
from
#numbers
select s.*, b.* from #slots s
left join #booking b
on s.start = b.start and s.[end] = b.[end]
where b.start is null
drop table #numbers, #booking, #slots
【问题讨论】:
标签: sql-server join temp