首页 > 解决方案 > 日期范围之间的日期范围

问题描述

我正在编写一个 SQL 查询,我必须在其中找到日期范围内的结果。

我有四个参数 OEFrom(保存在 DB)OETo(保存在 DB)To & From(用户提供)。

我的查询有点像

select * from tblName where OEFrom>=From and To>=OETo

问题是此查询仅在 To 和 From 位于 OEFrom 和 OETo 之间时才有效。如果它们位于外部,则不会返回结果。根据我对它的理解,我有 4 种情况: * 1. OEFrom>From and OEToFrom and OETo>To 3. OEFromTo

考虑到所有这些情况,有没有办法可以编写查询。

标签: sqlsql-server

解决方案


如果您想要任何重叠,请使用以下逻辑:

select *
from tblName
where OEFrom <= To AND
      OETo >= From;

如果每个范围都在另一个结束之前开始(或者在这种情况下,如果要包括端点,则在此之前或之前),则两个范围重叠。


推荐阅读