在SQL中获取当前年份的第一个月和第一天
我有一个SP,我想获取当前年份以及一年中的第一天和第一个月 例如,今年:在SQL中获取当前年份的第一个月和第一天,sql,sql-server,datetime,Sql,Sql Server,Datetime,我有一个SP,我想获取当前年份以及一年中的第一天和第一个月 例如,今年:2014-01-01 对于2015: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) 但它返回的是2016年而不是2014年的任何
2014-01-01代码>
对于2015: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)
但它返回的是2016年而不是2014年的任何帮助?这里有一个解决方案来获得您想要的结果:
DECLARE @test DATETIME
SET @test = CAST(DATEPART(YEAR, GETDATE()) AS VARCHAR(4)) + '-01-01'
SELECT @test
设置值时,会自动转换为DATETIME
希望这会对您有所帮助。您的问题是,您正在将日期和月份添加到数值中。year()返回一个整数
隐式转换“-”为int返回0
因此,表达式的结果将是2014+0+1+0+1,因为当您有一个整数并尝试添加(var)字符时,sqlserver将尝试将所有其他内容转换为整数
将日期操纵到一年中的第一天的最佳方法可能是:
SELECT DATEADD(yy, DATEDIFF(yy, 0, getdate()), 0)
您只需稍微修改您的剪报:
declare @data datetime , @test datetime
SELECT @test = GETDATE()
set @test = convert(nvarchar(4),YEAR(@test)) +'-'+'01'+'-'+'01'
set @data = @test
这将适用于您竖起大拇指。。!!这是一种很好的处理方法,而不是将01-01
连接到日期