SQL Server的时间跨度
我有一个预订系统,在特定的TimeSpan中,我怎样才能获得很多RoomStatus?SQL Server的时间跨度
ex。
ArrivalDate : 09-21-2011 4:00pm
NumberOfHours : 3
DepartureDate : 09-21-2011 7:00pm
RoomNo : 10
RoomStatus : Reserved
我希望房间号10的状态仅在4:00 - 7:00之间保留?
您有什么想法吗?
我使用SQL Server 2008和Visual Studio 2010
编辑
***RESERVATION TABLE***
PK-ReservationNo bigint
FK-ReservationTypeID int
PK-ClientID bigint
FK-RoomNo int
NoOfPersons int
NoOfHours int
ArrivalDate smalldatetime
DepartureDate smalldatetime
***ROOM TABLE***
PK-RoomNo int
FK-RoomTypeNo int
FK-RoomStatusId int
尝试将您的查询转换是这样;
if datediff(hour, ArrivalDate, DepartureDate) > NumberOfHours
update('Empty')
else
update ('Reserved')
SELECT * FROM Reservation WHERE DateDiff(hour,ArrivalDate,DepartureDate)> NoOfHours 这是正确的吗? – TheOxblood
是的,它看起来是正确的 – xenedia
但我认为这是不正确的,因为我想从晚上7点起,Room10仍然可用。它只在下午4:00-7:00之间不可用 – TheOxblood
这可能是你想要什么:
DECLARE @StartDate DateTime = '2011-01-01 12:00'
DECLARE @EndDate DateTime = '2011-01-01 15:00'
--Free rooms between 12:00 and 15:00
SELECT *
FROM Room
WHERE NOT EXISTS(
SELECT NULL
FROM
Reservation
WHERE
((ArrivalDate > @StartDate AND ArrivalDate < @EndDate) OR
(DepartureDate > @StartDate AND DepartureDate < @EndDate))) AND
Reservation.FK-RoomNo = Room.PK-RoomNo)
等一下,我会为此尝试! :) 顺便说一句,startdatetime和enddatetime将来自VS2010 – TheOxblood
你是什么意思由FREEROOMS下注12:00-15:00? 我想看到所有可用的房间,除了一个房间的预订12:00-15:00 .. 我的酒店是一个旅馆btw! – TheOxblood
这就是它的意思 – Magnus
用某种开始时间/结束对上的记录(包括'datetime')... –
是的,到达和出发时间是In and Out .. 我怎么说,晚上7点起,10号房间不保留? – TheOxblood
你的数据表是什么样的?您是否想要一个查询,例如在给定的时间段内为您提供所有“免费”房间? – Magnus