当前正在处理一个t-sql查询,该查询应该获得当前会计年度(我们使用4-4-5日历)之间的所有记录的列表。记录的开始和结束日期分别为2018年6月2日、2020年7月31日。
我筛选的日期是:
DECLARE @StartDate DATE = '12-29-2018';
DECLARE @EndDate DATE = '12-31-2019'; 我在where子句中的条件是:
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)
)我也尝试过两者之间的变化。是否知道我可能做错了什么,以及如果记录在对应日期内,我如何获得要包括的所有记录的列表。
答案:
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
)
)现在看来这对我很有效。
发布于 2019-01-30 00:49:24
对于失败的情况,这应该是可行的。
o.Revenue_Start_Date__c <= @EndDate AND o.Revenue_End_Date__c >= @StartDate

发布于 2019-01-30 00:49:46
这是你想要的吗?
(o.Revenue_Start_Date__c < @EndDate AND
o.Revenue_End_Date__c >= @StartDate
)这是重叠间隔的逻辑。注意,这些不等式可能是精确的,也可能是不精确的,这取决于您对重叠的实际定义。
https://stackoverflow.com/questions/54425779
复制相似问题