2013-08-13 2 views
10

Я использую функцию CONVERT(data_type(length),expression,style), чтобы изменить формат даты в запросе SELECT.Как получить определенный формат даты ('dd-MMM-yyyy') в запросе SELECT SQL Server 2008 R2

Объявите @dt NVARCHAR (20)

Выберите @dt = Преобразование (NVARCHAR (20), SalesDate, 113) ОТ SalesTable

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

+2

Это, как правило, лучше делать это форматирование ближе к пользователю (например, в генераторе отчетов или в любом другом коде, который вы пишете, который представляет результаты пользователю) –

+0

Хорошо, я буду помнить об этом :) @Damien_The_Unbeliever –

ответ

25

Попробуйте это:

Declare @dt NVARCHAR(20) 

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

Отличный ответ .. то, что я искал @Abhishek Jain –

+0

Используйте функции обрезки, если у вашей даты есть время, и вы не хотите видеть конечные черточки REPLACE (RTRIM (LTRIM (CONVERT (CHAR (15), SalesDate, 106))), '', '-') –

5

Он не похож на 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), которые могут сделать проблемы в будущем.

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

или еще

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

как работает отлично

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

ИЛИ

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

возвращает конкретную дату в формате 'дд-мм-гггг'

Результат был бы так ..

04-07-2016 
Смежные вопросы