Pரத*_*ீப் 44
使用DATENAME&SUBSTRING函数,如下所示:
declare @str nvarchar(50) = '201604'
select UPPER(left(datename(mm,cast(@str+'01' as date)),3))+substring(@str,3,2) --APR16
Run Code Online (Sandbox Code Playgroud)
Bri*_*dge 17
它有点难看,但你不能使用任何内置的日期格式化的东西.如果您有月份名称表等,请随意更换联接的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)
Run Code Online (Sandbox Code Playgroud)
试试这个:
添加'01'(作为月的第一天),因此将varchar转换为datetime并获取月份的日期名称:
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)
Run Code Online (Sandbox Code Playgroud)
最后添加01,以便它更改为有效的日期格式.然后使用datename函数:
DECLARE @STRING VARCHAR(10)='201604'
SELECT DATENAME(MONTH,@STRING+'01') +' '+SUBSTRING(@STRING,3,2)
Run Code Online (Sandbox Code Playgroud)
输出:
April 16
Run Code Online (Sandbox Code Playgroud)
分为两行:
declare @napis varchar(6)='201506'
SELECT UPPER(LEFT(DATENAME(month, @napis+'01'),3)) + SubString(@napis,3,2)
Run Code Online (Sandbox Code Playgroud)
另一个选择是使用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))
Run Code Online (Sandbox Code Playgroud)
APR16
用这个简单吧
declare @test nvarchar(max) = '201604'
select left(DATENAME(month, @test +'01'),3) + SubString(@napis,3,2)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4900 次 |
| 最近记录: |