首页 > 解决方案 > SQL - 在多个日期范围内查找记录时出现问题

问题描述

我正在寻找一种方法来提取具有很多可能日期的数据。

日期列表示例:

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 个日期,所以我真的不希望它们出现在“或”语句中。

标签: sql-serverssms

解决方案


您可以使用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)
             )
                

推荐阅读