我要選擇價值= 201301
轉換日期爲YYYYMM格式
select getdate(), cast(datepart(year, getdate()) as varchar(4))+cast(datepart(MONTH, getdate()) as varchar(2))
返回20131
什麼是正常的方式做到這一點?
我要選擇價值= 201301
轉換日期爲YYYYMM格式
select getdate(), cast(datepart(year, getdate()) as varchar(4))+cast(datepart(MONTH, getdate()) as varchar(2))
返回20131
什麼是正常的方式做到這一點?
SELECT LEFT(CONVERT(varchar, GetDate(),112),6)
這是第1個月,所以你會得到預期的價值。你必須ZEROPAD月(1 - > 01),按這樣的回答:How do I convert an int to a zero padded string in T-SQL?
SELECT CONVERT(nvarchar(6), GETDATE(), 112)
Upvotes for this answer!許多,許多upvotes! – Kermit
這是非常優雅的解決方案!豎起大拇指 – Nightmaresux
不錯,簡單。如果你想要的話,你也可以刪除unicode:'SELECT CONVERT(varchar(6),GETDATE(),112)' – jumxozizi
其實,這是的適當的方式得到你想要的東西,除非你能使用MS SQL 2014(最終爲日期時間啓用自定義格式字符串)。
要獲得yyyymm
而不是yyyym
,你可以使用這個小竅門:
select
right('0000' + cast(datepart(year, getdate()) as varchar(4)), 4)
+ right('00' + cast(datepart(month, getdate()) as varchar(2)), 2)
這比convert(..., 112)
gettings零件更快,更可靠。
你可以把你的日期在多種格式,例如:
CONVERT(NVARCHAR(10), DATE_OF_DAY, 103) => 15/09/2016
CONVERT(NVARCHAR(10), DATE_OF_DAY, 3) => 15/09/16
Syntaxe:
CONVERT('TheTypeYouWant', 'TheDateToConvert', 'TheCodeForFormating' *)
在你的情況,我剛轉換,並限制由nvarchar的尺寸(6)所示:
CONVERT(NVARCHAR(6), DATE_OF_DAY, 112) => 201609
一種更有效的方法,使用整數運算,而不是串/ VARCHAR處理,這將導致一個int類型,而不是一個字符串類型是:
SELECT YYYYMM = (YEAR(GETDATE()) * 100) + MONTH(GETDATE())
添加兩個零到今年的右側,然後每月增加還增加了兩個零。
欲瞭解更多信息,請查看此鏈接列表不同的日期格式sql服務器支持。 https://msdn.microsoft.com/en-us/library/ms187928.aspx –