显示日期范围开始日期和结束日期

问题描述 投票:0回答:1

我有一张包含开始日期和结束日期的表格。我想输出一个范围内的所有记录。范围将从 2023-03-30 到 2023-04-15。所有在时间窗口内的记录都需要输出,包括开始时间早,结束时间晚的记录。

ID   Start       End
1    2023-02-01  2023-06-15
2    2023-03-24  2023-04-12
3    2023-04-10  2023-04-20
4    2023-04-01  2023-04-05
5    2023-03-10  2023-03-28
6    2023-04-16  2023-04-20
7    2023-03-31  2023-04-15
8    2023-03-30  2023-04-15
9    2023-04-15  2023-04-20
10   2023-04-16  2023-04-20
SET @startDay = '2023-03-30';
SET @LastDay = '2023-04-15';
SELECT
  ID,
  Start,
  End
From tbl
WHERE (Start <= @startDay AND End >= @LastDay)
   OR (Start >= @startDay AND End <= @LastDay)

查询将显示记录 1、2、3、4、7、8、9,但不会显示 5、6、10。 不幸的是不起作用。我将如何更改查询?

sql sql-server sql-server-2012
1个回答
2
投票

如果您需要获取时间段的任何部分出现在您的范围内的行,则需要检查结束日期是否在开始时间之后,开始日期是否在结束日期之前

SET @StartDay = '2023-03-30';
SET @LastDay = '2023-04-15';
SELECT ID,
       Start,
       End
FROM dbo.tbl
WHERE End >= @StartDay
  AND Start <= @LastDay;
© www.soinside.com 2019 - 2024. All rights reserved.