![](/img/trans.png)
[英]SQL Query to get the first day of the month passed in the parameer of the current year
[英]Get current year first month and first day in SQL
我有一個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年的任何幫助?
您的問題是您將日期和月份添加到數值。 year()返回一個整數。
隱式轉換' - '作為int返回0。
因此,您的表達式將導致2014 + 0 + 1 + 0 + 1,因為當您有一個整數並嘗試添加(var)字符時,sqlserver將嘗試將其他所有內容轉換為整數。
操縱日期到一年中第一天的最佳方法可能是:
SELECT DATEADD(yy, DATEDIFF(yy, 0, getdate()), 0)
以下是獲得所需結果的解決方案:
DECLARE @test DATETIME
SET @test = CAST(DATEPART(YEAR, GETDATE()) AS VARCHAR(4)) + '-01-01'
SELECT @test
設置值時會自動轉換為DATETIME
。
希望這會幫助你。
你可以稍微修改你的剪輯:
declare @data datetime , @test datetime
SELECT @test = GETDATE()
set @test = convert(nvarchar(4),YEAR(@test)) +'-'+'01'+'-'+'01'
set @data = @test
這對你有用
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.