Access查询设计,用SQL语言,判断某一日期是否在某一时间段内,求帮助!!

大神们求帮助!在下做简单的作业,交上去要算入期末总分,但是实在想不出来这题。一个宾馆,想要查询某一日期的所有空房列表。有“开始入住时间”,“入住天数”,如何写SQL语言才... 大神们求帮助!
在下做简单的作业,交上去要算入期末总分,但是实在想不出来这题。

一个宾馆,想要查询某一日期的所有空房列表。
有“开始入住时间”,“入住天数”,如何写SQL语言才能查询出某一天的空房列表?以下是我自己做的,唯一的问题是,遇到一次入住跨两个月份的时候,它就识别不出来。。。。
SELECT room.roomID
FROM room, reservation, hotel
WHERE reservation.roomID=room.roomID
AND room.hotelID=hotel.hotelID
AND hotel.hotelID="1"
AND (DATE>(reservation.dateDebut+reservation.nbday)
OR DATE<reservation.dateDebut)
【dateDebut就是开始入住的日期,nbday就是入住的天数】
展开
 我来答
tjrmgs
2013-11-24 · TA获得超过5765个赞
知道大有可为答主
回答量:2161
采纳率:94%
帮助的人:1049万
展开全部
哦,对了按照惯例,入住酒店当天算一天,客人退房那天客房就属于空房了。客人实际占用房间的日期为“订房当天”到“订房当天+入住天数-1”。假如入住日期为2013-11-04 入住1天,那么2013-11-04入住,到5号房间就腾空了;入住两天,那么2013-11-04号到5号入住,到2013-11-06房间腾空。。。以此类推。编写SQL代码需要考虑这种算法。之前的代码疏忽了这种入住天数的惯常算法,现在予以更正。

查出某酒店(酒店ID="1")今天的空闲客房列表:
SELECT room.roomID
FROM room, reservation, hotel
WHERE reservation.roomID=room.roomID
AND room.hotelID=hotel.hotelID
AND hotel.hotelID="1"
AND (
reservation.dateDebut<Date() OR
Dateadd('d',reservation.nbday-1,reservation.dateDebut)<Date()
)

查出某酒店(酒店ID="1")某天(例如2013-12-01)的空闲客房列表:
SELECT room.roomID
FROM room, reservation, hotel
WHERE reservation.roomID=room.roomID
AND room.hotelID=hotel.hotelID
AND hotel.hotelID="1"
AND (
reservation.dateDebut<#2013-12-01# Or
DateAdd('d',reservation.nbday-1,reservation.dateDebut)<#2013-12-01#
)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式