如何将以下11/30/2014
转换为Nov-2014
11/30/2014
存储为varchar
答案 0 :(得分:3)
试试这样:
DECLARE @str VARCHAR(100)='11/30/2014';
SELECT FORMAT(CONVERT(DATE,@str,101),'MMM yyyy')
SQL-Server 2012引入了FORMAT
功能 - 非常帅......
尽管您在评论中说明了标记,但您正在使用SQL Server 2012,所以这对您来说应该没问题......
答案 1 :(得分:2)
你可以使用TRY_CONVERT
(为了避免在你有任何无效日期时破坏),样式101
转换为日期,然后FORMAT
获取你想要的输出。
SELECT FORMAT(TRY_CONVERT(DATE, '11/30/2014', 101), 'MMM-yyyy')
HOWEVER dates should be stored as dates和formatting should be left to the presentation layer,所以我要做的就是整理你的数据库,以便将数据存储为适当的类型,然后你可以格式化应用程序中的数据。这将是一些前期的工作,但将解决许多令人头疼的问题。
答案 2 :(得分:2)
即使使用Sql server 2005也应该有效的解决方案正在使用convert,right和replace:
DECLARE @DateString char(10)= '11/30/2014'
SELECT REPLACE(RIGHT(CONVERT(char(11), CONVERT(datetime, @DateString, 101), 106), 8), ' ', '-')
结果:Nov-2014
答案 3 :(得分:1)
select CONVERT(varchar,cast('11/30/2014' as date), 103)