0

我的作业需要一个 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

我正在尝试,如果房间有这些日期范围的预订,则不应进行第二次预订。

4

2 回答 2

0

您正在使用太多功能。日期范围查询很简单

where YourDateField >= TheStartofYourDateRange
and YourDateField < TheDayAfterTheEndOfYourDateRange

当你弄清楚你的任务时,请记住这一点。

于 2013-03-28T12:26:09.360 回答
0

你试试这个希望它有帮助

WHERE 
CONVERT(DATETIME(RZ.ARRIVAL_TIME)) >= CONVERT(DATETIME('3/12/2013'))
AND
CONVERT(DATETIME(RZ.LEAVE_TIME)) <= CONVERT(DATETIME('3/14/2013'))
于 2013-11-12T08:32:18.497 回答