去年同日期的SQL语法

问题描述 投票:2回答:2

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

SELECT * from MyView

WHERE StayDate >= '2014-07-01'

我需要为此查询添加一个过滤器,该过滤器将应用于名为“CreatedOn”的字段(它是datetime字段)。过滤器需要根据上一年的相同日期过滤“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()部分,使其成为去年的相同日期?

sql-server tsql date
2个回答
6
投票

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

DATEADD(YEAR, -1, GETDATE())

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

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

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


More common date routines.


0
投票
SELECT getdate() - 365

即,

SELECT * from MyView

WHERE StayDate >= '2014-07-01'

AND CreatedOn <= getdate() - 365

编辑:不适用于闰年。谢谢@mechnicov。

© www.soinside.com 2019 - 2024. All rights reserved.