2015-10-26 44 views
2

我使用SQL Server 2014和我有以下T-SQL查询,从视图表中提取数据:SQL语法去年

SELECT * from MyView 

WHERE StayDate >= '2014-07-01' 

我需要一个过滤器添加到此查询将应用于名为“CreatedOn”的字段(它是日期时间字段)。过滤器需要根据相同日期的最后一年过滤“CreatedOn”。

因此,如果今天的日期是“2015年10月26日”,我的查询应该是这样的:

SELECT * from MyView 

WHERE StayDate >= '2014-07-01' 

AND CreatedOn <= '2014-10-26' 

由于此查询将在PowerPivot的环境中使用,我这样的思考:

SELECT * from MyView 

WHERE StayDate >= '2014-07-01' 

AND CreatedOn <= getdate() 

如何修改getdate()部分,以便它与去年的日期相同?

+1

'DATEADD(YEAR,-1,GETDATE())' –

回答

5

为当前日期之前获得之日起一年,你可以使用:

DATEADD(YEAR, -1, GETDATE()) 

然而,由于包括时间成分,有一种可能性,即一些记录将被排除在外。您应该使用此代替:

< DATEADD(DAY, 1, DATEADD(YEAR, -1, DATEDIFF(DAY, '19000101', GETDATE()))) 

以上将返回一年前一天的日期加上一天。也就是说,如果今天的日期是'2015-10-26',上述将返回'2014-10-27'。请注意,这将没有时间分量,您应该使用<进行比较。


More common date routines.