按日期检查某个地点在PostgreSQL中是否可用

epggiuax  于 2022-10-15  发布在  PostgreSQL
关注(0)|答案(1)|浏览(148)

我是一名初级开发人员,我正在尝试创建一个应用程序,以便在带有PostgreSQL的Spring Boot上的一个开放空间中预订一个座位。
我希望能够检查该地点是否已经被预订在持续时间内用户所希望的。我已经查过数据库了,但我不知道如何继续进行验证。
示例:我已经有一个事件:

{
    id:'1',
    name :'Pepito',
    start:'2019-01-01 00:01:00',
    end:'2019-03-06 00:01:00',
    desk_id:'16'
}

开始列和结束列是不带时区类型的时间戳。
我想插入一个新事件,而不会与具有相同Desk_id的其他事件同时发生。

zd287kbt

zd287kbt1#

要按日期检查工作区是否空闲,您需要运行以下查询:

select case when count(*) > 0 then false else true end as available from my_table WHERE desk_id = $YOUR_DESK_ID and not (
  (start < '$YOUR_START_DATE' and end < '$YOUR_START_DATE') 
   or
  (start > '$YOUR_END_DATE' and end > '$YOUR_END_DATE') 
);

查询结果将返回TRUE或FALSE。这样,您可以在添加新记录之前进行检查。

相关问题