gpt4 book ai didi

where 子句中的 SQL 日期差异

转载 作者:行者123 更新时间:2023-12-02 08:17:22 24 4
gpt4 key购买 nike

我正在执行如下查询:

SELECT
*
FROM a
WHERE DATEDIFF(D, a.DateValue, DateTimeNow) < 3;

并且不工作

我正在尝试获取不超过 3 天的数据。

SQL 服务器。

如何做到这一点?

DATEDIFF 运行速度太慢..

最佳答案

DateDiff 非常快...您的问题是您在数据库表列值上运行它,因此查询处理器必须在表中的每一行上运行该函数,即使有该列的索引。这意味着它必须从磁盘加载整个表。

相反,请对今天的日期使用 dateAdd 函数,并将数据库表列与该单个计算的结果进行比较。现在它只运行 DateAdd() 一次,并且可以使用索引(如果存在)来仅加载与谓词条件匹配的行。

其中 a.DateValue > DateAdd(day,-3,getdate())

以这种方式执行此操作会使您的查询谓词 SARG-able

关于where 子句中的 SQL 日期差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5266643/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com