SQL转换 - 2015-1格式日期到2015-01格式

时间:2016-07-12 15:11:59

标签: sql sql-server

我有一个varchar列,其值如下所示

A
2015-4
2015-12
2015-9

我需要新列看起来像

A
2015-04
2015-12
2015-09

任何指针都受到高度赞赏。

3 个答案:

答案 0 :(得分:2)

您可以考虑将其转换为正确的DATE,然后在使用SQL Server 2012及更高版本时通过FORMAT()函数对其进行格式化:

SELECT FORMAT(CAST(YourColumn + '-1' AS DATE),'yyyy-MM')

答案 1 :(得分:1)

stuff()怎么样?

select (case when len(a) = 6
             then stuff(a, 6, 0, '0')
             else a
        end) as a

或者:

select (case when len(a) = 6
             then replace(a, '-', '-0')
             else a
        end) as a

答案 2 :(得分:0)

DECLARE @Table1  TABLE 
    (A varchar(7))
;

INSERT INTO @Table1
    (A)
VALUES
    ('2015-4'),
    ('2015-12'),
    ('2015-9')
;

陈旧方法:适用于2008年及以后上述

select SUBSTRING(A,0,CHARINDEX('-',A))+'-'+
RIGHT('000'+CAST(REVERSE(SUBSTRING(REVERSE(A),0,CHARINDEX('-',REVERSE(A)))) AS VARCHAR),2) 
from @Table1