Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何使用DATEDIFF SQL Server函数并从索引中获益?_Sql Server_Tsql - Fatal编程技术网

Sql server 如何使用DATEDIFF SQL Server函数并从索引中获益?

Sql server 如何使用DATEDIFF SQL Server函数并从索引中获益?,sql-server,tsql,Sql Server,Tsql,我的SQL语句包括以下where子句: DATEDIFF(day,LastActivityTimestamp,getdate()) > 90 但是LastActivityTimestamp上的索引在这里不起作用。如何重写它以利用索引?好吧,下面仍然使用一个函数,但允许在LastActivityTimestamp上使用索引,这可能是您所要求的: LastActivityTimestamp < DATEADD(day,-90,getdate()) LastActivityTimest

我的SQL语句包括以下where子句:

DATEDIFF(day,LastActivityTimestamp,getdate()) > 90

但是LastActivityTimestamp上的索引在这里不起作用。如何重写它以利用索引?

好吧,下面仍然使用一个函数,但允许在
LastActivityTimestamp
上使用索引,这可能是您所要求的:

LastActivityTimestamp < DATEADD(day,-90,getdate())
LastActivityTimestamp

如果这不是你想要的,你可能需要在你的问题中添加更多的信息,说明你到底想做什么/试图避免什么。

好吧,下面仍然使用了一个函数,但允许在
LastActivityTimestamp
上使用索引,这可能是你想要的:

LastActivityTimestamp < DATEADD(day,-90,getdate())
LastActivityTimestamp

如果这不是你想要的,你可能需要在你的问题中添加更多的信息,确切地说你想做什么/试图避免什么。

避免使用函数的唯一方法是硬编码日期范围。(
getDate()
也是一个函数。)

其中LastActivityTimestamp<@startDaterRange

我建议您编辑您的答案,以提供更多关于您真正的最终目标的详细信息。

避免使用函数的唯一方法是硬编码日期范围。(
getDate()
也是一个函数。)

其中LastActivityTimestamp<@startDaterRange

我建议您编辑您的答案,以提供更多关于您真正的最终目标的详细信息。

不,这就是全部。谢谢。嗯,好像不起作用。WHERE子句返回的行数与WITHEN子句返回的行数相同,似乎没有什么区别。但是,我的子句返回正确的计数。所以,缺少了一些东西。@mark-oops。它应该是
DATEADD
,而不是
DATEDIFF
。我也找到了。仍然使用DATEDIFF,但是使用了90,而不是-90。@mark-是的,使用
DATEDIFF
的版本很有效,但它依赖于日期与
int
之间的时髦转换。
DATEADD
版本更清楚地说明了“我想找到90多天前最后一次活动的所有内容”不,完全是这样。谢谢。嗯,好像不起作用。WHERE子句返回的行数与WITHEN子句返回的行数相同,似乎没有什么区别。但是,我的子句返回正确的计数。所以,缺少了一些东西。@mark-oops。它应该是
DATEADD
,而不是
DATEDIFF
。我也找到了。仍然使用DATEDIFF,但是使用了90,而不是-90。@mark-是的,使用
DATEDIFF
的版本很有效,但它依赖于日期与
int
之间的时髦转换。
DATEADD
版本更清楚地说明了“我想找到90天前最后一次活动的所有内容”是的,你是对的。我应该用不同的措辞来回答这个问题。是的,你说得对。我应该用不同的措辞来回答这个问题。我现在做了。仅供参考,尝试使用
GETDATE()-90
代替
DATEADD(day,-90,GETDATE())
在“天”中工作时,您可以从
datetime
中添加/减去整数天,而不使用
DATEADD()
FYI,在“天”中工作时,尝试使用
GETDATE()-90
代替
DATEADD(day,-,-90,GETDATE())
,您只需从
datetime
中添加/减去整数天,无需
DATEADD()