我正在执行预订酒店的功能,当我通过以下方式获得可用房间时
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之间,我希望返回的结果类似于上面的查询
SELECT *
FROM oder
WHERE
startDate >= '2020-12-26 06:53:18.114+00' AND
endDate <= '2020-12-28 06:53:18.114+00'发布于 2021-01-07 21:56:14
看起来您可能对范围数据类型感兴趣,在本例中为tsrange。使用range时,您还可以创建constraint以避免重复预订。
各种range functions将帮助您找到您要查找的记录。
编辑:使用范围并查找重叠的记录时,此查询可能会执行以下操作:
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将是存储时间戳范围的字段。
发布于 2021-01-07 22:09:41
如果我没记错的话,您需要根据您指定的时间段预订房间作为输入。
您可以使用OR条件和BETWEEN,如下所示:
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'https://stackoverflow.com/questions/65613579
复制相似问题