SQL是日期范围内的记录吗?

时间:2013-03-28 12:21:44

标签: sql sql-server date range

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

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

2 个答案:

答案 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'))