将日期转换为DD-MMM-YYYY格式

时间:2014-01-09 09:45:14

标签: sql-server sql-server-2008 date-formatting

我在SQL中使用以下代码行:

REPLACE(CONVERT(VARCHAR(11),getdate(),106), ' ','-') 

将指定日期转换为MMM-DD-YYYY格式,如果当前日期超过10,则此代码工作正常。

但是当我尝试转换单个数字日期时,我遇到错误,例如当我转换日期9 jan 2014时。它被转换为Jan--9-2014

实际上这是错误的,因为它包含一个额外的-

请帮我解决此问题。

8 个答案:

答案 0 :(得分:1)

你可以试试这个:

select convert(varchar, getdate(), 105)
select REPLACE(REPLACE(CONVERT(VARCHAR,getdate(),106), ' ','-'), ',','')

请检查另一个sql datetime格式:

select convert(varchar, getdate(), 101)
select convert(varchar, getdate(), 102)
select convert(varchar, getdate(), 103)
select convert(varchar, getdate(), 104)
select convert(varchar, getdate(), 105)
select convert(varchar, getdate(), 106)
select convert(varchar, getdate(), 107)
select convert(varchar, getdate(), 108)
select convert(varchar, getdate(), 109)
select convert(varchar, getdate(), 110)
select convert(varchar, getdate(), 111)
select convert(varchar, getdate(), 112)
select convert(varchar, getdate(), 113)

答案 1 :(得分:0)

在dd-mmm-yyyy格式中转换日期(例如,2018年6月1日)

REPLACE(CONVERT(CHAR(11), DOB, 106),' ','-')  AS DOB

答案 2 :(得分:0)

自SQL Server 2012 + 起,您可以使用FORMAT(value, format [, culture ])

format参数采用任何有效的standard format stringcustom formatting string

示例

SELECT FORMAT(GETDATE(), 'dd-MMM-yyyy')

进一步阅读

答案 3 :(得分:-1)

试试这个

SELECT CONVERT(varchar(11),getdate(),103) 

有关详细信息,请参阅this link

答案 4 :(得分:-1)

试试这个。

select REPLACE(REPLACE(CONVERT(VARCHAR,getdate(),107), ' ','-'), ',','')

答案 5 :(得分:-1)

select REPLACE(replace(cast(getDate() as varchar(11)), '  ', ' '), ' ','-')

在你的小提琴上返回正确的结果Jan-9-2014

here is the fiddle

答案 6 :(得分:-1)

这个怎么样:

select REPLACE(REPLACE(REPLACE(cast(getDate() as varchar(11)),' ','{}'),'}{',''),'{}','-')

输出:Jan-9-2014

SQL Fiddle Demo

答案 7 :(得分:-1)

怎么样?
select left(DATEname(m,getdate()),3)+'-'+  
cast(DAY(getdate()) as varchar)+'-'+ 
CAST(year(getdate()) as varchar)