我正在写一个数据库视图来总结一堆日期列中的值在最近7天内的记录。它看起来是这样的:直接在where子句中如何避免在SQL视图中使用getdate()?
CREATE VIEW RecentRecordSum AS
SELECT t.ID,
SUM(t.SomeValue) AS ValueSum
FROM SomeTable t
WHERE t.RecordDate >= DATEADD(d,-7,GETDATE())
GROUP BY t.ID
是否有这样做的一种方式,而不必在GETDATE()?
我使用的是SQL Server 2000和2005
望着查询计划显示GETDATE()调用的成本仅为0.03%,整个查询(这是明显比一个更复杂以上),所以表现不是问题,但我喜欢我的查询是确定性的。
理想情况下,我还想将-7参数作为列公开,以便它可以用于查询视图的where子句。目前,我正在考虑7,14,28天窗口的少量意见。
不知道如果我理解这个问题。如果不在where子句中,它会在哪里?你是否想过通过某种参数? – micahtan 2009-05-28 23:12:16
我假设这是为了避免对resultset的每一行评估GETDATE()的性能。 – Joe 2009-05-28 23:57:03
为什么你认为它是每行评估? – RedFilter 2009-05-29 00:11:47