SQL Server - 将日期转换为D-MMM-YYYY格式

时间:2016-05-03 01:58:26

标签: sql sql-server tsql date-formatting

如何以D-MMM-YYYY格式获取3 May 2016字符串,例如CONVERT(VARCHAR, GETDATE(), 106)

如果我使用<?xml version="1.0"?> <aspectj> <!-- place all aspects here --> <aspects> <aspect name="<full qualified name of aspect class>"/> </aspects> <weaver options="-verbose -showWeaveInfo"> </weaver> ,我会在当天得到一个领先的零,这不是我想要的。

3 个答案:

答案 0 :(得分:5)

如果您使用的是SQL Server 2012或更高版本,请使用FORMAT

SELECT FORMAT(GETDATE(), 'd MMM yyyy')

编辑:下面的一些答案都是错误的,所以我正在为旧版本的SQL Server添加解决方案。 2005年是我能掌握的最早的事情:

SELECT CASE
        WHEN CONVERT(varchar(20), GETDATE(), 106) LIKE '0%'
            THEN SUBSTRING(CONVERT(varchar(20), GETDATE(), 106), 2, 20)
        ELSE CONVERT(varchar(20), GETDATE(), 106)
       END

答案 1 :(得分:5)

SELECT case when left(convert(varchar(20),[DateColumn],106),1) ='0'
       then right(convert(varchar(20),[DateColumn],106),len(convert(varchar(20),[DateColumn],106))-1)
       else convert(varchar(20),[DateColumn],106)
       end
  FROM [DB].[dbo].[Table]

一些示例输出:

29 Apr 2016
2 Apr 2016

答案 2 :(得分:0)

如果您无法使用FORMAT(在SQL Server 2012下面)

DECLARE @date DATE = '20160503'

SELECT REPLACE(DATEPART(DAY, @date),' 0','') + ' ' +
       CONVERT(CHAR(3), @date, 0) + ' ' +
       CAST(DATEPART(YEAR, @date) AS CHAR(4))