我正在编写一个SQL查询,我必须在其中查找日期范围内的结果。
我有四个参数 OEFrom(保存在数据库中) OETo(保存在数据库中) 到和从(用户提供)。
我的查询就像
select * from tblName where OEFrom>=From and To>=OETo
问题是此查询仅在ToFrom和From位于OEFrom和OETo之间时才起作用。 如果它们在外面,则不会返回结果。从我的理解来看,我有4种情况: * 1. OEFrom>从和OEToFrom和OETo>到 3. OEFromTo
考虑到所有这些情况,有没有办法我可以编写查询。
答案 0 :(得分:0)
如果要重叠,请使用以下逻辑:
select *
from tblName
where OEFrom <= To AND
OETo >= From;
如果两个范围都在另一个端点之前开始(或者,在这种情况下,如果要包含端点,则在此之前或之前),则两个范围重叠。
答案 1 :(得分:0)
您也可以检查此内容
SELECT *
FROM your_table
WHERE OEFrom BETWEEN [From] AND [To]
AND OETo BETWEEN [From] AND [To]