簡體   English   中英

獲取當前年度第一個月和第一天的SQL

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM