首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有日期和时间的停车预约可用性查询

有日期和时间的停车预约可用性查询
EN

Stack Overflow用户
提问于 2014-04-22 08:20:32
回答 2查看 1.7K关注 0票数 0

我正在实施一个停车预订系统,在这个系统中,用户会预留一个停车位。

预订表

代码语言:javascript
复制
columns
--------------
parkingSpaceId
VehicleId
UserId
startDate
startTime
EndDate
EndTime 

空间表

代码语言:javascript
复制
columns
--------
avialableSpaces
noOfBookings

用户可以使用参数startDatestartTimeEndDateEndTime检查可用的停车位。

if avialableSpaces==noOfBookings就没有停车位了。

找出startDate、StartTime和EndDate、EndTime之间是否有停车位的逻辑是什么?

EN

回答 2

Stack Overflow用户

发布于 2014-04-22 08:31:42

通过询问parkingSpaceIds,您可以在特定时间获得可用停车场的数量,而在这个时间内,您的预定时间是开始还是结束。

顺便问一句:你为什么在你的桌子上分日期和时间?我能想到的唯一原因是有可能有一个没有另一个,例如一天没有指定的时间(也没有默认的时间相关)。如果是这样的话,您必须在上面的select中考虑到这一点。如果没有,您应该更改表的设计。

编辑:由于您的预订表有一个parkingSpaceId,我想也有一个停车位表,每个停车位都有记录。这是一份可能的声明。这取决于dbms,语句的外观如何。这里我使用甲骨文的AddTime函数将日期和时间结合起来,以便更容易地进行比较。总是需要处理单独的日期和时间字段,如果其中一个字段为空--这将是拆分的唯一合理原因--这就更加复杂了。您必须相应地调整语句。

代码语言:javascript
复制
select parkingspaceid
from parkingspaces s
where not exists
(
  select *
  from reservations r
  where r.parkingspaceid = s.id
  and 
  (
    ( 
      addtime(:startdate,:starttime) >= addtime(r.startdate,r.starttime)
      and 
      addtime(:startdate,:starttime) < addtime(r.enddate,r.endtime)
    )
    or
    ( 
      addtime(:enddate,:endtime) >= addtime(r.startdate,r.starttime)
      and 
      addtime(:enddate,:endtime) < addtime(r.enddate,r.endtime)
    )
  )
);
票数 0
EN

Stack Overflow用户

发布于 2019-10-15 09:33:01

代码语言:javascript
复制
select parkingspaceid
from parkingspaces s
where not exists
(
  select *
  from reservations r
  where r.parkingspaceid = s.id
  and 
  (
    ( 
      addtime(:startdate,:starttime) >= addtime(r.startdate,r.starttime)
      and 
      addtime(:startdate,:starttime) < addtime(r.enddate,r.endtime)
    )
    or
    ( 
      addtime(:enddate,:endtime) >= addtime(r.startdate,r.starttime)
      and 
      addtime(:enddate,:endtime) < addtime(r.enddate,r.endtime)
    )
  )
);
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23214191

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档