2015-10-26 76 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.