2015-03-31 33 views
0

如果按照数据的用户输入,我想获得自由和预订位置如何从两个日期得到免费的位置/场地在SQL

Start Date : 01/03/2015  
End Date : 31/03/2015  
Start Time : 02:30 PM  
End Time : 05:30 PM 

我有以下表结构来存储位置的日期明智

Date   Day   StartTime EndTime Location 
2015-03-01 Sunday  2:30 PM 05:30 PM Location - A 
2015-03-02 Monday  4:30 PM 05:30 PM Location - B 
2015-03-03 Tuesday  5:45 PM 06:45 PM Location - C 

输出,如:

Location - A  Booked 
Location - B  Booked 
Location - C  Free 
+0

你有没有考虑替代的表结构? – 2015-03-31 07:46:39

+1

您在哪里保存预订状态?你怎么能找到哪一个被预订,哪一个不是? – 2015-03-31 07:47:09

回答

0

请检查该样品。

DECLARE @T TABLE (Date varchar(50), Day VARCHAR(50) ,StartTime varchar(50), EndTime varchar(50), Location VARCHAR(50)) 
INSERT INTO @T VALUES('2015-03-01','Sunday','2:30 PM','05:30 PM','Location - A'), 
('2015-03-02','Monday','4:30 PM','05:30 PM','Location - B'), 
('2015-03-03','Tuesday','5:45 PM','06:45 PM','Location - C') 

Declare @stdate datetime = '03/01/2015 2:30 PM' , --',' 
@endate datetime = '03/31/2015 5:29 PM' 

--Result will be all booked 
SELECT *, 
    cast(date + ' ' + StartTime as datetime) actualdate, 
    case when cast(date + ' ' + StartTime as datetime) between @stdate and @endate then 'Booked' 
    else 'free' end 
FROM @T 
0

尝试类似的东西

declare @Start_Date date = '01/03/2015' 
DECLARE @End_Date date = '31/03/2015' 
DECLARE @Start_Time time ='02:30 PM' 
DECLARE @End_Time time = '05:30 PM' 

SELECT location 
,  iif((Date = @Start_Date AND StartTime >= @Start_Time AND EndTime <= @End_Time),'booked','free') 
FROM tbl