我有以下查询,返回开始日期或结束日期在指定日期范围之间的记录。
DECLARE @ReportStartDate date = '01 Apr 2019'
DECLARE @ReportEndDate date = '01 May 2019'
select * from #temp
where
(StartDate between @ReportStartDate and @ReportEndDate) or
(EndDate between @ReportStartDate and @ReportEndDate) or
(EndDate is null)
我遇到的问题是,开始日期为“ 2019年3月1日”,结束日期为“ 2019年8月4日”,这意味着它在2019年4月1日至2019年5月1日的日期范围内,但是我的标准不不满足。
如何记录这些类型的记录?
样本数据:
CREATE TABLE #temp
(
ID int,
StartDate datetime,
EndDate datetime NULL
)
insert into #temp
(
ID,
StartDate,
EndDate
)
select
1,
'01 Mar 2019',
NULL
union all
select
2,
'01 Mar 2019',
'04 Aug 2019'
union all
select
3,
'14 Jul 2019',
NULL
答案 0 :(得分:5)
我会说出你的情况,如下:
5
这实际上将检查日期范围是否重叠了,这似乎正是您想要的。
ID | StartDate | EndDate -: | :------------------ | :------------------ 1 | 01/03/2019 00:00:00 | null 2 | 01/03/2019 00:00:00 | 04/08/2019 00:00:00 3 | 14/07/2019 00:00:00 | null