过滤日期大于24个月而不是2年?

时间:2013-08-30 17:04:05

标签: sql reporting-services ssrs-2008

这是我到目前为止所做的:

SELECT ListKey
FROM Closing_List
WHERE DATEPART(YEAR,closedate) > DATEPART(YEAR,GETDATE())-2)

但我想要24个月回来。

谢谢!

3 个答案:

答案 0 :(得分:2)

SELECT ListKey
FROM Closing_List
WHERE closedate > DATEADD(MONTH, -24, GETDATE())

答案 1 :(得分:2)

SELECT ListKey
FROM Closing_List
WHERE closedate > DATEADD(MONTH,-24,GETDATE())

答案 2 :(得分:0)

使用DATEADD只要你知道它对日期做了什么就可以了。

GetDate()返回当前日期和时间。现在对我来说是08/30/2013 02:18:14pm

通过DATEADD(MONTH,-24,GETDATE())传递08/30/2011 02:18:14pm'

因此,如果我使用该信息运行您的查询,它将以大于(不等于)08/30/2011 02:18:14pm的闭合值给我所有结果。关于这一点有几点需要考虑。

例如,如果您的记录在2011年8月30日下午1:00关闭,那么它们将不会包含在您的结果中。此外,如果您的关闭日期根本没有时间,那么您将无法从2011年8月30日获得任何记录。

另请注意,如果您在2013年9月2日运行该查询,则它将不包含2011年9月1日的记录。根据您的需要,这可能是也可能不是问题。

另一种解决方案可能是:

SELECT ListKey
FROM Closing_List
WHERE closedate >= dateadd(month,datediff(month,0,getdate())-24,0)

如果您在2013年9月的任何时间运行上述内容,它将包括截止日期为2011年9月至2013年9月的所有记录。它不关心当前的当天是哪一天,或者关闭日期是否包括时间数据