获得上一年的第一个日期

时间:2015-11-21 15:02:01

标签: sql sql-server tsql

如何修改以下声明以获取上一年的第一个日期(最好不引入其他引号)

SELECT DATEADD(yy, DATEDIFF(yy,0,getdate()), -1)

4 个答案:

答案 0 :(得分:8)

如果您使用SQL Server 2012+,请使用 DATEFROMPARTS

SELECT DATEFROMPARTS ( DATEPART(yyyy, GETDATE()) - 1, 1, 1 )

LiveDemo

答案 1 :(得分:4)

让它发挥作用

Test::Group

答案 2 :(得分:2)

更好的答案是:

SELECT DATEADD(yy,DATEDIFF(yy,0,GETDATE())-1,0)

如果您了解原始作品的工作原理,则知道将-1放在哪里。

DATEADD的参数为DATEADD(间隔,增量int,表达式smalldatetime)。

因此,在上面的表达式中,DATEDIFF函数返回一个整数,即当前日期和日期零(0)之间的年差。

上述语句中的表达式接受零(0)作为smalldatetime。

因此它将“日期零”和“当前日期”之间的年数加到日期零。

日期零是1900年1月1日,因此无论提供的日期是什么,您都将获得1月1日。

以下内容为您提供零日期:

select dateadd(yy,0,0)

因此,要再追溯一年,只需从间隔中减去1,则间隔变为:

DATEDIFF(yy,0,GETDATE())-1

答案 3 :(得分:1)

另一种方法是:

select dateadd(year, -1, datename(year, getdate()) + '0101')