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