我有一个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年的任何帮助?
您的问题是您将日期和月份添加到数值.year()返回一个整数.
隐式转换' - '作为int返回0.
所以,你的表达将导致在2014年+ 0 + 1 + 0 + 1,因为当你有一个整数,并尝试添加(VAR)字符,SQLSERVER将尝试一切以整数转换.
操纵日期到一年中第一天的最佳方法可能是:
SELECT DATEADD(yy, DATEDIFF(yy, 0, getdate()), 0)
Run Code Online (Sandbox Code Playgroud)