获取当前年度第一个月和第一天的SQL

3 sql sql-server datetime

我有一个SP,我希望得到当年,第一天和第一个月.

例如,今年:2014-01-01; For2015 : 2015-01-01;

我试过了

@data datetime , @test datetime

SELECT @test = GETDATE()
set @test = CAST( YEAR(@test)+'-'+'01'+'-'+'01' as char(100))
set @data = CAST( @test as datetime)
Run Code Online (Sandbox Code Playgroud)

但是它返回2016年而不是2014年的任何帮助?

t-c*_*.dk 5

您的问题是您将日期和月份添加到数值.year()返回一个整数.

隐式转换' - '作为int返回0.

所以,你的表达将导致在2014年+ 0 + 1 + 0 + 1,因为当你有一个整数,并尝试添加(VAR)字符,SQLSERVER将尝试一切以整数转换.

操纵日期到一年中第一天的最佳方法可能是:

SELECT DATEADD(yy, DATEDIFF(yy, 0, getdate()), 0)
Run Code Online (Sandbox Code Playgroud)