Sql server 如何在sql中从两个日期获得免费位置/地点

Sql server 如何在sql中从两个日期获得免费位置/地点,sql-server,Sql Server,如果用户输入以下数据,我希望获得免费和预订的位置 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

如果用户输入以下数据,我希望获得免费和预订的位置

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

请检查一下这个样品

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

试试那样的

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

您是否考虑过其他表格结构?预订状态保存在哪里?你怎么知道哪一个已经预订了,哪一个还没有预订?