sql - SQL:尝试选择日期前 7 天的记录
问题描述
我有一个带有名为 oppo_installdate 的日期字段的表。这是一个未来的日期,我基本上想选择这个日期距离当前日期不超过 7 天的记录。我曾尝试使用下面的查询来执行此操作,但它的返回日期也较早于 2019 年,我不确定为什么会发生这种情况。
select * from [CRM_Test].[dbo].[Opportunity]
where (GETDATE() >= DATEADD(day,-7, oppo_installdate))
有人可以提出更好的方法吗?
解决方案
每当您使用时,WHERE
总是尝试将任何函数应用于常量或其他函数,而不是您的列。DATEADD(day,-7, oppo_installdate)
将使查询成为非 SARGable,并且可能会因为无法使用任何索引而减慢它的速度。
看起来你只是想要的是:
SELECT *
FROM [dbo].[Opportunity]
WHERE oppo_installdate >= DATEADD(DAY, 7, GETDATE());
请注意,GETDATE
返回 a datetime
,因此如果您想从 7 天前的午夜开始,您将使用CONVERT(date,GETDATE())
(或CAST(GETDATE() AS date)
)。
推荐阅读
- c++ - 从宏参数生成标识符
- c - 不使用指针将数组传递给函数
- c# - 提示用户使用给定的构造函数创建 2 个对象的信息
- javascript - 错误:10 中止:对这些文档的争用过多。请再试一次
- ios - Spotify Search catalog request : 400 Bad request
- c# - 通过事件分派时接收为 null 的对象
- c# - 我在将我的在线托管 MySQL 数据库与我的 C# 应用程序连接时遇到问题
- ruby-on-rails - 从控制器测试发送请求时,URL 的预期格式是什么?
- linux - 如何在 Linux 上启动 Eclipse
- c++ - c ++,从文件读取到结构然后再到向量(结构被推入向量太多次而不是一次)