Промежуток времени для SQL Server - PullRequest
0 голосов
/ 21 сентября 2011

У меня есть система бронирования, как я могу получить много средств от RoomStatus за определенный промежуток времени?

ex.

    ArrivalDate : 09-21-2011 4:00pm

    NumberOfHours : 3

    DepartureDate : 09-21-2011 7:00pm

    RoomNo : 10

    RoomStatus : Reserved

Я хочу, чтобы RoomNo 10 имел статус ЗАБРОНИРОВАНО только с 4:00 до 19:00?

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

Я используюSQL Server 2008 и VS 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

Ответы [ 2 ]

0 голосов
/ 21 сентября 2011

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

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 голосов
/ 21 сентября 2011

Попробуйте преобразовать ваш запрос следующим образом;

if datediff(hour, ArrivalDate, DepartureDate) > NumberOfHours 
update('Empty') 
else
update ('Reserved')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...