转换功能转换以下" 11/30/2014"格式为2014年11月

时间:2016-03-14 15:39:56

标签: sql sql-server sql-server-2012

如何将以下11/30/2014转换为Nov-2014 11/30/2014存储为varchar

4 个答案:

答案 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 datesformatting should be left to the presentation layer,所以我要做的就是整理你的数据库,以便将数据存储为适当的类型,然后你可以格式化应用程序中的数据。这将是一些前期的工作,但将解决许多令人头疼的问题。

值得注意的是FORMAT doesn't scale particularly well

答案 2 :(得分:2)

即使使用Sql server 2005也应该有效的解决方案正在使用convertrightreplace

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)

参考:https://msdn.microsoft.com/en-us/library/ms187928.aspx