我在思考一个需求,比如用户打开某酒店的 app, 选择一个住店的时间范围,比如 2020-01-10
入住,2020-01-20
离店。
作为开发者,我很容易就能知道某个房间当前的状态,是有入住还是没有入住,但是如何根据一个时间段来判断呢?我如何判断 2020-01-10
—— 2020-01-20
这个时间段的房间剩余情况呢?
比如用户选定了 2020-01-10
—— 2020-01-20
这个时间段,现在有一间房A, 2020-01-10
—— 2020-01-19
是空房状态,但是 2020-01-20
这一天被人预定了,那么这间房A就不能够匹配用户所选择的这个时间段。
补充一:
不好意思,可能是我描述的不够清楚。设想这样一个场景:用户打开携程订酒店,根据入住时间和离店时间选择了一个区间,然后开始搜索,得到一个酒店列表。
问题1:假如我是携程后台,我这边有很多酒店,不止一家,我如何判断我的这些酒店,在用户选择的这个时间段内,哪些酒店是有房的,哪些是没房的,如果有房又有几间房(对于没房的,就没有必要显示出来了)
问题2:用户根据得到的酒店列表,选择了其中一家酒店,这个时候会向用户展示该酒店的房型。此时时间区间是已知的,我如何确定该酒店的某个房型在这个时间段内是有房的,又剩余几件房?
简单点 就可以将已经订好的酒店存入一张单独的表 就能确定这个房间那段时间有人居住了
select * from t where not exists (t.startTime >= startTime and i.startTime <= endTime) or (t.endTime >= startTime and i.endTime <= endTime)
没看懂啊会长,我姑且将 t 理解为是订单记录表,那 i 是什么?
@Yoooshiki: 打错字了....是t
必须要有入住记录,每个人一条,然后有时间,就可以查询了