sql-server - 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 个日期,所以我真的不希望它们出现在“或”语句中。
解决方案
您可以使用join
或exists
:
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)
)
推荐阅读
- php - 查找具有动态键的数组值
- git - Git 克隆设置为原点,无法从远程存储库中读取
- python - 当索引为整数时如何从熊猫系列中获取数据?
- angular5 - 将数据从子组件传递到子组件
- python - 使用 lmfit 时出现“ValueError:输入包含 nan 值”
- git - Fork 一个开源存储库以在 Github 上创建一个新项目
- sql - MSSQL 在某个字符后用另一个字符串替换字符串
- rspec - RSpec 系统规范可以从模型中看到工厂数据,但不能从视图中看到
- java - Android:工具栏后退按钮是透明的
- java - 我打算使应用程序崩溃的活动,抛出错误 java.lang.ArrayIndexOutOfBoundsException: length=14; 索引=14