我有一个存储过程,其中包含一个当前将历史查询限制为前一年的变量。
来自用户的询问是,我们允许回溯2年但如果传递给相关程序的日期范围在去年之内,出于性能原因,我们仍然将搜索到的数据集限制为过去一年。
我们目前使用此变量
将查询限制为过去一年 SET @yearago = CONVERT(numeric(8,0), CONVERT(char(8),
DATEADD(yy,-1,GETDATE()),112))
我知道我可以将DATEADD
参数设置为-2来增加数据集,但我需要找到一种优雅,轻量级的方法来确定何时应该根据fromDate执行此操作。事务性sql不是我的强项,我找不到它的日期比较的好例子。我想这对一些sql爱好者来说很简单。
答案 0 :(得分:0)
DATEDIFF(d, @RequestedDate, GETDATE())
如果它大于365,则超过一年。希望有所帮助!
答案 1 :(得分:0)
像“if / then语句”这样的东西应该有用......这是我在报告运行的那天使用的一个例子。您可以将DateName函数更改为DW(星期几)或类似月份,年份或其他任何内容,与您尝试作为参数提取的日期进行比较...
Declare @DateTo as Date
Declare @DateFrom as Date
DECLARE @dayName VARCHAR(9);
SET @dayName = DATEName(DW, GETDATE());
IF(@dayName = 'Monday')
Begin
Set @DateTo = GETDATE()
Set @DateFrom = DateAdd(dd,-3,GETDATE())
End
Else
IF(@dayName <> 'Monday')
Begin
Set @DateTo = GETDATE()
Set @DateFrom = DateAdd(dd,-1,GETDATE())
End