2011-09-19 113 views

回答

0

試試這個:

declare @c int 
set @c = 92011 
SELECT DATENAME(MONTH,CAST(RIGHT(@c,4) + '-' + LEFT(@C, LEN(@C)-4) + '-01' AS DATE)) + '-' + RIGHT(@c,4) 

或 以下情況:

declare @c int 
set @c = 92011 
select CASE WHEN LEFT(@C, LEN(@C)-4) = 1 THEN 'January' 
     WHEN LEFT(@C, LEN(@C)-4) = 2 THEN 'February' 
     WHEN LEFT(@C, LEN(@C)-4) = 3 THEN 'March' 
     WHEN LEFT(@C, LEN(@C)-4) = 4 THEN 'April' 
     WHEN LEFT(@C, LEN(@C)-4) = 5 THEN 'May' 
     WHEN LEFT(@C, LEN(@C)-4) = 6 THEN 'June' 
     WHEN LEFT(@C, LEN(@C)-4) = 7 THEN 'July' 
     WHEN LEFT(@C, LEN(@C)-4) = 8 THEN 'August' 
     WHEN LEFT(@C, LEN(@C)-4) = 09 THEN 'September' 
     WHEN LEFT(@C, LEN(@C)-4) = 10 THEN 'October' 
     WHEN LEFT(@C, LEN(@C)-4) = 11 THEN 'November' 
     WHEN LEFT(@C, LEN(@C)-4) = 12 THEN 'December' 
     ELSE '' END + '-' + RIGHT(@c,4) 
+0

在第一個代碼,如果你會使用數字,如92011.叟,你應該使用這樣的代碼,你會得到錯誤: 'SELECT DATENAME(MONTH,CAST(RIGHT(@ c,4)+' - '+ LEFT(@ c,LEN(@c)-4)+'-01'AS DATE))+' - '+ RIGHT(@ c,4)' – Dalex

+0

@Dalex:是的,檢查我的更新答案。 –

0
declare @c int 
set @c = 102011 

;with M(Num, Name) as 
(
    select 1, 'January' union all 
    select 2, 'February' union all 
    select 3, 'March' union all 
    select 4, 'April' union all 
    select 5, 'May' union all 
    select 6, 'June' union all 
    select 7, 'Juli' union all 
    select 8, 'August' union all 
    select 9, 'September' union all 
    select 10, 'October' union all 
    select 11, 'Novmber' union all 
    select 12, 'December' 
) 
select M.Name+'-'+right(@c, 4) 
from M 
where M.Num = left(@c, len(@c)-4) 

在回答使用DATENAMEUpendra Chaudhari提供啓發。

select datename(month, dateadd(month, left(@c, len(@c)-4) - 1, 0))+'-'+right(@c, 4) 
相關問題