我的作业需要一个SQL查询。 查询必须返回正确的结果。
我的错误查询:
SELECT RZ.* FROM TBL_HOTEL_RESERVATION AS RZ
INNER JOIN TBL_HOTEL_ROOM AS ROOM
ON ROOM.ROOM_CODE <> RZ.ROOM_CODE
WHERE
(CONVERT(DATETIME,LEFT(RZ.ARRIVAL_TIME,12)) <= CONVERT(DATETIME,LEFT('3/12/2013',12))
AND
CONVERT(DATETIME,LEFT(RZ.LEAVE_TIME,12)) > CONVERT(DATETIME,LEFT('3/12/2013',12)))
OR
(CONVERT(DATETIME,LEFT(RZ.ARRIVAL_TIME,12)) < CONVERT(DATETIME,LEFT('3/14/2013',12))
AND
CONVERT(DATETIME,LEFT(RZ.LEAVE_TIME,12)) >= CONVERT(DATETIME,LEFT('3/14/2013',12)))
例如
room no : 1040
first reservation: 12 march 2013 -15 march 2013
second reservation: 13 march 2013 - 16 march 2013
我正在尝试,如果房间预订了这些日期范围,则不应该进行第二次预订。
答案 0 :(得分:0)
您使用的功能太多了。日期范围查询就像
一样简单where YourDateField >= TheStartofYourDateRange
and YourDateField < TheDayAfterTheEndOfYourDateRange
在你弄清楚自己的任务时,请记住这一点。
答案 1 :(得分:0)
你有没有试过这个希望呢?
WHERE
CONVERT(DATETIME(RZ.ARRIVAL_TIME)) >= CONVERT(DATETIME('3/12/2013'))
AND
CONVERT(DATETIME(RZ.LEAVE_TIME)) <= CONVERT(DATETIME('3/14/2013'))