简体   繁体   English

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

[英]SQL Server - converting date to D-MMM-YYYY format

How can I get the string from GETDATE() in D-MMM-YYYY format, eg 3 May 2016如何从GETDATE()D-MMM-YYYY格式获取字符串,例如3 May 2016

If I use CONVERT(VARCHAR, GETDATE(), 106) , I would get a leading zero on day which is not what I want.如果我使用CONVERT(VARCHAR, GETDATE(), 106) ,我会在当天得到一个前导零,这不是我想要的。

If you are on SQL Server 2012 or later, use FORMAT :如果您使用的是 SQL Server 2012 或更高版本,请使用FORMAT

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

Edit: some of the answers below are just flat-out wrong so I'm adding a solution for older versions of SQL Server.编辑:下面的一些答案完全错误,所以我为旧版本的 SQL Server 添加了一个解决方案。 2005 is the earliest that I can get my hands on: 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
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]

Some sample output :一些示例输出:

29 Apr 2016
2 Apr 2016

If you cannot use FORMAT (Below SQL Server 2012)如果您不能使用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))

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM