試圖輸出是這樣的:輸出年份和月份用繩子
2016,11
使用此:
SELECT
CONVERT(VARCHAR(20),YEAR(GETDATE()) + ',' + MONTH(GETDATE())) AS YearMonth
我缺少的東西轉換?因爲我收到此錯誤:
Conversion failed when converting the varchar value ',' to data type int.
感謝
試圖輸出是這樣的:輸出年份和月份用繩子
2016,11
使用此:
SELECT
CONVERT(VARCHAR(20),YEAR(GETDATE()) + ',' + MONTH(GETDATE())) AS YearMonth
我缺少的東西轉換?因爲我收到此錯誤:
Conversion failed when converting the varchar value ',' to data type int.
感謝
試試這個。
SELECT
CONVERT(VARCHAR(20),YEAR(GETDATE())) + ',' + CONVERT(VARCHAR(20), MONTH(GETDATE())) AS YearMonth
你缺少的MONTH()
輸出轉換爲字符串。這裏有一種方法:
select datename(year, getdate()) + ',' + cast(month(getdate()) as varchar(255)) as YearMonth
datename()
很方便,因爲它返回一個字符串。不幸的是,在月份它返回的是月份的名稱,而不是數字。
你也可以這樣做:
select replace(convert(varchar(7), getdate(), 120), '-', ',')
或者使用format()
在SQL Server 2012+:
select format(getdate(), 'yyyy,MM')
我想你想用120而不是12來轉換...順便說一句:它是否一定要依賴分隔字符(如本例中的連字符)? – Shnugo
@Shnugo。 。 。謝謝。我的目標是120或121。 –
您可以使用CONVERT
與112達成串無定界符( 「20161110」)。將其轉換爲VARCHAR(*6*)
將隱含縮短當天。其中一種(大多數情況下爲正效應)副作用:您將得到一個低月份零填充(例如2016,04)。然後我用STUFF
插入,
:
SELECT STUFF(CONVERT(VARCHAR(6),GETDATE(),112),5,0,',')
如果你不喜歡的補零一個月,你可以在STUFF
這樣更換0
:
DECLARE @d DATETIME={d'2016-04-05'};
SELECT STUFF(CONVERT(VARCHAR(6),@d,112),5,CASE WHEN MONTH(@d)<10 THEN 1 ELSE 0 END,',')
您正在使用哪個數據庫管理系統? –
'YEAR()'和'MONTH()'都返回一個數字。您必須分別轉換它們才能在字符串連接中使用它們。這個錯誤是由於'YEAR(GETDATE())+','+ MONTH(GETDATE())',它被作爲總共的'CONVERT'的第二個參數... – Shnugo
Khrys,有一個問題:一個月低於10?你期望* 2016,2 *或* 2016,02 *(見'02'中的前導零)? – Shnugo