如何在SELECT查询SQL Server 2008 R2中获取特定日期格式('dd-MMM-yyyy')

Saq*_*eed 12 select date date-format sql-server-2008

我正在使用CONVERT(data_type(length),expression,style)函数来更改SELECT查询中的日期格式.

声明@dt nvarchar(20)

从SalesTable中选择@dt = Convert(nvarchar(20),SalesDate,113)

我需要的格式是'dd-MMM-yyyy'(例如'05 -Jul-2013')但是我找不到这种特定格式的正确样式编号(例如113).请问有人帮我吗?

Abh*_*ain 29

试试这个:

Declare @dt NVARCHAR(20)

Select 
    @dt = REPLACE(CONVERT(CHAR(15), SalesDate, 106),' ',' - ') 
FROM SalesTable
Run Code Online (Sandbox Code Playgroud)

  • 如果您的日期有时间并且不想看到尾随的破折号,请使用修剪函数.REPLACE(RTRIM(LTRIM(CONVERT(CHAR(15),SalesDate,106))),'','-') (2认同)

小智 8

select CONVERT(NVARCHAR, SYSDATETIME(), 106) AS [DD-MON-YYYY]
Run Code Online (Sandbox Code Playgroud)

要不然

select REPLACE(CONVERT(NVARCHAR,GETDATE(), 106), ' ', '-')
Run Code Online (Sandbox Code Playgroud)

两者都很好


Bre*_*ett 6

默认情况下,它看起来不像DD-MMM-YYYY(至少使用短划线作为分隔符).但是,使用AS子句,您应该能够执行以下操作:

SELECT CONVERT(VARCHAR(11), SYSDATETIME(), 106) AS [DD-MON-YYYY]

见这里:http://www.sql-server-helper.com/sql-server-2008/sql-server-2008-date-format.aspx


小智 5

我认为这是最好的方法。

REPLACE(CONVERT(NVARCHAR,CAST(WeekEnding AS DATETIME), 106), ' ', '-')
Run Code Online (Sandbox Code Playgroud)

因为您不必使用varchar(11)varchar(10)将来可能会产生问题。