2015-03-31 2 views
0

Если пользователь вводит следующие данные, я хочу, чтобы получить свободные и зарезервированные LocationsКак получить свободное место/место из двух дат в 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

Вы рассматривали альтернативные структуры таблицы? –

+1

Где Вы можете продолжить бронирование? как вы можете найти, какой из них забронирован, а какой нет? –

ответ

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 
Смежные вопросы