从数据库获取值而不是使用 Declare

Getting values from Database instead of using Declare

我正在使用

declare @starttime datetime = '2015-10-28 10:00', 
        @endtime datetime = '2015-10-28 12:00', 
        @interval int = 30

我想从 table 中检索这些值,而不是将它们声明为静态值。我有一个单独的 table,它具有这 3 个值(StartdateEnddateinterval)。

我尝试创建一个临时文件 table 然后向其中插入值,但是如果我想在我的进一步查询中使用值,命名约定将无法工作。我的整个查询是这样的,在此我希望从数据库中获取 startdateenddateinterval 而不是静态的。

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

我不太确定我理解这个问题,但假设您可以从中获取一行 table,您可以这样做:

declare @starttime datetime
       ,@endtime datetime
       ,@interval int 

select @starttime = starttime
      ,@endtime = endtime 
      ,@interval = interval
 from yourTable
 where <condition>

您可以这样做:

SELECT
  @starttime = Startdate
, @endtime   = Enddate
, @interval  = interval
FROM  YourTableHere