SQL - 在多个日期范围内查找记录时出现问题

SQL - Problem finding records in a range for multiple dates

我正在寻找一种方法来提取包含大量可能日期的数据。

日期示例列表:

declare @visitDate table (Id DATE)
insert into @visitDate values ('2009-04-02'), ('2019-04-08'), ('2020-01-23')

记录可以从列出日期之前的 7 天到之后的 7 天。 我试着这样做:

 WHERE effectiveDateTime_date BETWEEN DATEADD(day, -7, '2009-04-02') AND DATEADD(day, +7, '2009-04-02')

这适用于设定的日期,但我似乎无法通过一长串要检查的日期来解决这个问题。我有超过 2000 个日期,所以我真的不希望它们出现在“或”语句中。

您可以使用 joinexists:

where exists (select 1
              from @visitDate vd
              where t.effectiveDateTime_date >= dateadd(day, -7, vd.id) and
                    t.effectiveDateTime_date <= dateadd(day, 7, vd.id)
             )