首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在@Start和@End日期之间;不拉入超出该日期的记录

在@Start和@End日期之间;不拉入超出该日期的记录
EN

Stack Overflow用户
提问于 2019-01-30 00:42:53
回答 2查看 87关注 0票数 0

当前正在处理一个t-sql查询,该查询应该获得当前会计年度(我们使用4-4-5日历)之间的所有记录的列表。记录的开始和结束日期分别为2018年6月2日、2020年7月31日。

我筛选的日期是:

代码语言:javascript
复制
DECLARE @StartDate DATE = '12-29-2018';
DECLARE @EndDate DATE = '12-31-2019'; 

我在where子句中的条件是:

代码语言:javascript
复制
 AND
          (

          (o.Revenue_Start_Date__c >= @StartDate AND  o.Revenue_End_Date__c <= @EndDate) OR (o.Revenue_End_Date__c >= @StartDate AND  o.Revenue_End_Date__c <= @EndDate)
          )

我也尝试过两者之间的变化。是否知道我可能做错了什么,以及如果记录在对应日期内,我如何获得要包括的所有记录的列表。

答案:

代码语言:javascript
复制
AND  (  -- Starts Within range
  ( o.Revenue_Start_Date__c 
    BETWEEN @StartDate
    AND     @EndDate
  )
OR  -- Ends within range
  (
    o.Revenue_End_Date__c
    BETWEEN @StartDate
    AND     @EndDate
   )
OR    -- SPANS Range
   (
     o.Revenue_Start_Date__c < @StartDate
     AND
     o.Revenue_End_Date__c > @EndDate  
    )
    )

现在看来这对我很有效。

EN

回答 2

Stack Overflow用户

发布于 2019-01-30 00:49:24

对于失败的情况,这应该是可行的。

o.Revenue_Start_Date__c <= @EndDate AND o.Revenue_End_Date__c >= @StartDate

票数 1
EN

Stack Overflow用户

发布于 2019-01-30 00:49:46

这是你想要的吗?

代码语言:javascript
复制
(o.Revenue_Start_Date__c < @EndDate AND 
 o.Revenue_End_Date__c >= @StartDate
)

这是重叠间隔的逻辑。注意,这些不等式可能是精确的,也可能是不精确的,这取决于您对重叠的实际定义。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54425779

复制
相关文章

相似问题

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