我有一段時間201604(nvarchar)。有沒有一種方法可以將201604
轉換爲APR16
?將YYYYMM轉換爲MMMYY
回答
使用DATENAME
& SUBSTRING
功能,像這樣:
declare @str nvarchar(50) = '201604'
select UPPER(left(datename(mm,cast(@str+'01' as date)),3))+substring(@str,3,2) --APR16
這有點難看,但你不能使用任何內置日期格式的東西。隨意換出,如果你有一個月份名稱表的連接case語句等:
DECLARE @exampleVal NVARCHAR(6) = '201604';
SELECT CASE SUBSTRING(@exampleVal, 5, 2)
WHEN '01' THEN 'JAN'
WHEN '02' THEN 'FEB'
WHEN '03' THEN 'MAR'
WHEN '04' THEN 'APR'
WHEN '05' THEN 'MAY'
WHEN '06' THEN 'JUN'
WHEN '07' THEN 'JUL'
WHEN '08' THEN 'AUG'
WHEN '09' THEN 'SEP'
WHEN '10' THEN 'OCT'
WHEN '11' THEN 'NOV'
WHEN '12' THEN 'DEC'
END +
SUBSTRING(@exampleVal, 3, 2)
試試這個:
添加「01」(如每月的第一天),所以轉換您VARCHAR到DATETIME並獲得一個月的DATENAME:
declare @myperiod nvarchar(10)
SET @myperiod = '201604'
SET @myperiod = @myperiod + '01'
SELECT UPPER(SUBSTRING(DATENAME(month, CONVERT(datetime, @myperiod)), 1, 3)) +
SUBSTRING(CONVERT(varchar, DATEPART(year, CONVERT(datetime, @myperiod))), 3, 4)
在兩行:
declare @napis varchar(6)='201506'
SELECT UPPER(LEFT(DATENAME(month, @napis+'01'),3)) + SubString(@napis,3,2)
那種感覺,當你給予絕對正確的答案,但學分去另一個。 – gofr1
使用簡單此
declare @test nvarchar(max) = '201604'
select left(DATENAME(month, @test +'01'),3) + SubString(@napis,3,2)
你的方法給了'2016年4月'。這是錯誤的 – Whencesoever
另一種方式:
DECLARE @Date varchar(6) = '201604'
SELECT REPLACE(SUBSTRING(CONVERT(char(9), CAST(@Date +'01' as Date), 6), 4, 7), ' ', '')
試試這個..
DECLARE @DATE NVARCHAR(6) = '201604'
SELECT datename(MONTH,CONVERT(DATE,CONVERT(DATE,LEFT(@DATE,4)+'.'+RIGHT(@DATE,2)+'.01',102),102))
添加01處最後一個,以便它更改爲有效的日期格式。然後使用DATENAME函數:
DECLARE @STRING VARCHAR(10)='201604'
SELECT DATENAME(MONTH,@STRING+'01') +' '+SUBSTRING(@STRING,3,2)
輸出:
April 16
只需添加上和左'選擇上(左(DATENAME(月,@ STRING + '01'),3))+ SUBSTRING(@ STRING,3,2)'和珍貴的OP請求:) – gofr1
另一種選擇是通過使用Format()
和DateFromParts()
。這將在SQL Server 2012或更新版本的工作:
Declare @Period NVarchar (6) = N'201604'
Declare @Format NVarchar (5) = N'MMMyy'
Select Upper(Format(DateFromParts(Left(@Period, 4), Right(@Period, 2), 1), @Format))
APR16
- 1. 將數值轉換爲yyyymm日期爲
- 2. Python - Pandas - 將YYYYMM轉換爲datetime
- 3. 將yyyymm-integer轉換爲日期
- 4. 轉換日期爲YYYYMM格式
- 5. 在R中將yyyymm格式轉換爲日期?
- 6. 將日期轉換爲DD/MM/YYYY HH:MM:SS至YYYYMM
- 7. 如何把yyyymm轉換成Mon-yyyy?
- 8. yyyymm轉換爲full sas日期(dd/mm/ccyy) - SAS
- 9. 如何編寫表達式將yyyymm轉換爲ssr中的mm-yyyy?
- 10. 如何在SQL中將varchar字段(YYYYMM)轉換爲日期(MM/01/YY)?
- 11. 將因素類的yyyymm轉換爲與ChartSeries一起使用的字符類()
- 12. 從DD-Mon-YY到YYYYMM的Oracle SQL轉換日期格式
- 13. 轉換日期格式MMMM YYYY以YYYYMM在asp.net VB
- 14. 從DD-MM-YYYY到yyyymm的日期轉換
- 15. 將MS Access.adp轉換爲ASP.Net轉換:DLookup轉換爲SQL
- 16. 將值轉換爲%
- 17. 將PeriodIndex轉換爲
- 18. 將ISML PAC轉換爲XForm轉換
- 19. 將VB6代碼轉換爲PHP轉換
- 20. 將3D轉換轉換爲2D
- 21. 將XML轉換,轉換爲屬性
- 22. 將HTML轉換爲Google文檔轉換
- 23. 將VB轉換爲C#類型轉換
- 24. 將DataRow []轉換爲DataTable的ASP.NET轉換
- 25. 將數據轉換爲數字轉換
- 26. 將json轉換爲數組php將數組轉換爲字符串轉換
- 27. 將表格轉換爲html並將其轉換爲div
- 28. FLEX XMLDecoder將`09.00`轉換爲「09.00」,但將`10.00`轉換爲10
- 29. 將XML轉換爲XML,將屬性轉換爲元素
- 30. 將OCaml轉換爲F#:將OCaml open_box和close_box轉換爲F#
你或許應該添加要使用到的問題的SQL Server版本 - 下面添的回答假設2012或更高版本。 – Bridge
@TimBiegeleisen'CONCAT'是2012年添加的問題。你當然可以使用'+'來連接字符串。我沒有挖,就像答案開始涌入,我想我們應該得到OP澄清:) – Bridge
反向鏈接http://codegolf.stackexchange.com/questions/83591/convert-yyyymm-to-mmmyy – Criggie