【发布时间】:2021-04-23 08:09:28
【问题描述】:
我被 SQL 查询卡住了。
我有这样的情况:在bookings 表中。我有两个简单的DATETIME 列date_start 和date_end,我有两个日期选择器,用户可以从中选择这两个日期和值,我们应该调用dp_date_start 和dp_date_end。
结果集中的行需要符合以下条件:
- 如果
date_start和date_end完全在该范围内 - 如果只有
date_start或date_end在该范围内 - 如果
date_start或date_end是边框值
基本上这是一个预订逻辑,想象一下如果房间已经被占用,则无法预订。
到目前为止我所尝试的:
SELECT *
FROM bookings
WHERE 'dp_date_start' BETWEEN start_date AND end_date
OR 'dp_date_end' BETWEEN start_date AND end_date
OR start_date BETWEEN 'dp_date_start' AND 'dp_date_end'
OR end_date BETWEEN 'dp_date_start' AND 'dp_date_end';
但如果失败,即 'dp_date_start' 等于 end_date。
提前致谢!
【问题讨论】:
-
用您正在使用的数据库标记您的问题。此外,单引号表示您的查询是无效的 SQL,应该会产生错误。
-
我知道,将其视为伪代码,因为我在 C# 中使用它。它不需要 100% 语法有效,我只需要逻辑。顺便说一句,单引号在 SQL 中的 C# 中是可以的 :)