首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查询postgres数据库

查询postgres数据库
EN

Stack Overflow用户
提问于 2021-01-07 21:49:07
回答 2查看 52关注 0票数 0

我正在执行预订酒店的功能,当我通过以下方式获得可用房间时

代码语言:javascript
复制
SELECT * 
FROM oder 
WHERE
    startDate >= '2020-12-26 06:53:18.114+00' AND 
    endDate <= '2020-12-30 06:53:18.114+00'

但当我输入存储在数据库中的确切开始和结束日期时,它是有效的,我希望当我输入开始和结束日期时,时间可以在数据库中存储的时间段内,我还可以获得所预订的房间。

示例:我选择startDate = 2020-12-27,endDate=2020-12-28在2020-12-26到2020-12-30之间,我希望返回的结果类似于上面的查询

代码语言:javascript
复制
SELECT * 
FROM oder 
WHERE
    startDate >= '2020-12-26 06:53:18.114+00' AND
    endDate <= '2020-12-28 06:53:18.114+00'
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-01-07 21:56:14

看起来您可能对范围数据类型感兴趣,在本例中为tsrange。使用range时,您还可以创建constraint以避免重复预订。

各种range functions将帮助您找到您要查找的记录。

编辑:使用范围并查找重叠的记录时,此查询可能会执行以下操作:

代码语言:javascript
复制
SELECT
    * 
FROM
    oder 
WHERE
    tsrange_field && tsrange ( '2020-12-26 06:53:18.114+00', '2020-12-28 06:53:18.114+00', '[]' );

假设:字段tsrange_field将是存储时间戳范围的字段。

票数 1
EN

Stack Overflow用户

发布于 2021-01-07 22:09:41

如果我没记错的话,您需要根据您指定的时间段预订房间作为输入。

您可以使用OR条件和BETWEEN,如下所示:

代码语言:javascript
复制
SELECT * 
  FROM oder 
 WHERE startDate between '2020-12-26 06:53:18.114+00' AND '2020-12-30 06:53:18.114+00'
    or endDate between '2020-12-26 06:53:18.114+00' AND '2020-12-30 06:53:18.114+00'
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65613579

复制
相关文章

相似问题

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