去年同日期的SQL语法

use*_*933 2 t-sql sql-server date

我正在使用SQL Server 2014,我有以下T-SQL查询从视图表中提取数据:

SELECT * from MyView

WHERE StayDate >= '2014-07-01'
Run Code Online (Sandbox Code Playgroud)

我需要为此查询添加一个过滤器,该过滤器将应用于名为"CreatedOn"的字段(它是datetime字段).过滤器需要根据上一年的相同日期过滤"CreatedOn".

因此,如果今天的日期是'2015-10-26',我的查询应该是这样的:

SELECT * from MyView

WHERE StayDate >= '2014-07-01'

AND CreatedOn <= '2014-10-26'
Run Code Online (Sandbox Code Playgroud)

由于此查询将在PowerPivot环境中使用,我正在考虑以下几点:

SELECT * from MyView

WHERE StayDate >= '2014-07-01'

AND CreatedOn <= getdate()
Run Code Online (Sandbox Code Playgroud)

如何修改getdate()部分,使其成为去年的相同日期?

Fel*_*tan 6

要获取当前日期之前一年的日期,您可以使用:

DATEADD(YEAR, -1, GETDATE())
Run Code Online (Sandbox Code Playgroud)

但是,由于包含时间组件,因此可能会遗漏某些记录.您应该使用此代替:

< DATEADD(DAY, 1, DATEADD(YEAR, -1, DATEDIFF(DAY, '19000101', GETDATE())))
Run Code Online (Sandbox Code Playgroud)

以上将返回当前加一天之前一年的日期.也就是说,如果今天的日期是'2015-10-26',则上述内容将返回'2014-10-27'.请注意,这将没有时间组件,您应该<用于比较.


更常见的日期例程.