从数据库获取值而不是使用 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 个值(Startdate
、Enddate
、interval
)。
我尝试创建一个临时文件 table 然后向其中插入值,但是如果我想在我的进一步查询中使用值,命名约定将无法工作。我的整个查询是这样的,在此我希望从数据库中获取 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
我不太确定我理解这个问题,但假设您可以从中获取一行 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
我正在使用
declare @starttime datetime = '2015-10-28 10:00',
@endtime datetime = '2015-10-28 12:00',
@interval int = 30
我想从 table 中检索这些值,而不是将它们声明为静态值。我有一个单独的 table,它具有这 3 个值(Startdate
、Enddate
、interval
)。
我尝试创建一个临时文件 table 然后向其中插入值,但是如果我想在我的进一步查询中使用值,命名约定将无法工作。我的整个查询是这样的,在此我希望从数据库中获取 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
我不太确定我理解这个问题,但假设您可以从中获取一行 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