2011-09-21 3 views
-1

У меня есть система бронирования, как я могу использовать RoomStatus в определенном TimeSpan?Временные интервалы для SQL-сервера

ex.

ArrivalDate : 09-21-2011 4:00pm 

    NumberOfHours : 3 

    DepartureDate : 09-21-2011 7:00pm 

    RoomNo : 10 

    RoomStatus : Reserved 

Я хочу, чтобы RoomNo 10 имел статус RESERVED только с 4:00 до 19:00?

У вас есть идеи?

Я использую SQL Server 2008 и VS 2010

EDIT

***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 
+2

С какой-то StartTime/пара EndTime (как 'datetime') на запись ... –

+0

Да, времени прибытия и отправления является In и Out .. Как я могу сказать, что с 19:00 и далее номер 10 не зарезервирован? – TheOxblood

+0

Как выглядит ваша таблица данных? Вам нужен запрос, который, например, дает вам все «свободные» комнаты за определенный промежуток времени? – Magnus

ответ

0

попытаться преобразовать запрос, как это;

if datediff(hour, ArrivalDate, DepartureDate) > NumberOfHours 
update('Empty') 
else 
update ('Reserved') 
+0

SELECT * FROM Бронирование WHERE DateDiff (час, ArrivalDate, DepartureDate)> NoOfHours Это правильно? – TheOxblood

+0

Да, его взгляд правильный – xenedia

+0

Но я считаю, что это не так, потому что я хочу видеть, что с 7:00 вечера и далее Room10 по-прежнему доступен. Он доступен не только между 4: 00-7: 00pm – TheOxblood

0

Это может быть то, что вы хотите:

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) 
+0

Подождите, я буду пытаться для этого! :) BTW, startdatetime и enddatetime будут поступать из VS2010 – TheOxblood

+0

Что вы подразумеваете под FREEROOMS BET 12: 00-15: 00? Я хочу, чтобы все номера были доступны, за исключением одной комнаты, у которой есть резервация 12: 00-15: 00 .. Мой отель был общежитием кстати! – TheOxblood

+0

вот что значит – Magnus

Смежные вопросы