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()部分,使其成为去年的相同日期?
要获取当前日期之前一年的日期,您可以使用:
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'.请注意,这将没有时间组件,您应该<用于比较.