Как получить определенный формат даты ('dd-MMM-yyyy') в запросе SELECT SQL Server 2008 R2

Я использую функцию CONVERT(data_type(length),expression,style) для изменения формата даты в запросе SELECT.

Объявить @dt nvarchar (20)

Выберите @dt = Преобразовать (nvarchar (20), SalesDate, 113) FROM SalesTable

Мне нужен формат dd-MMM-yyyy (например, '05 -Jul-2013 '), но я не смог найти подходящий номер стиля (например, 113) для этого конкретного формата. Может ли кто-нибудь помочь мне в этом, пожалуйста?

Ответ 1

Попробуйте следующее:

Declare @dt NVARCHAR(20)

Select 
    @dt = REPLACE(CONVERT(CHAR(15), SalesDate, 106),' ',' - ') 
FROM SalesTable

Ответ 2

select CONVERT(NVARCHAR, SYSDATETIME(), 106) AS [DD-MON-YYYY]

или еще

select REPLACE(CONVERT(NVARCHAR,GETDATE(), 106), ' ', '-')

оба отлично работают

Ответ 3

Похоже, что 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

Ответ 4

Я думаю, что это лучший способ сделать это.

REPLACE(CONVERT(NVARCHAR,CAST(WeekEnding AS DATETIME), 106), ' ', '-')

Потому что вам не нужно использовать varchar(11) или varchar(10), что может сделать проблему в будущем.

Ответ 5

SELECT Convert(varchar(10),CONVERT(date,'columnname',105),105) as "end";

ИЛИ

SELECT CONVERT(VARCHAR(10), CAST(event_enddate AS DATE), 105) AS [end];

вернет определенную дату в формате "dd-mm-yyyy"

Результат будет таким.

04-07-2016