如何使用dateadd获取去年的第一天?

时间:2015-08-03 21:54:47

标签: sql-server tsql

我试图提取截至2014年1月1日至今年(即2014年8月3日)的数据。我怎样才能使用``dateadd`获取日期1/1/14?我使用以下代码获取日期8/3/14。

dateadd (yy, -1, getdate())

我想避免明确搜索1/1/14,因为在一年的时间里,我希望sql查询找到1/1/15,而不必重新进入并重写它

3 个答案:

答案 0 :(得分:2)

使用DATEFROMPARTS

DATEFROMPARTS(YEAR(GETDATE()) - 1, 1, 1)

答案 1 :(得分:2)

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

答案 2 :(得分:0)

DATEFROMPARTS()是最好的方法,但它需要SQL2012或更高版本。如果您在早期的vierion,请试试这个:

您可以使用GETDATE()获取当前日期
您可以使用函数YEAR()从任何日期提取年份 从中减去1来获得去年 将1/1/附加到其正面
再将其转换回日期

select convert(datetime, '1/1/' + convert(varchar(max),year(getdate())-1))