2016-03-16 3 views
1

Просто запрос MSSQL, который имеет дату в формате:Формат даты как «DD Месяц YYYY»

'2016-03-22 00:00:00.000' 

Мне нужно отформатировать его как:

'22 March 2016' 

Я использую SQL Сервер 2012 года. Я пробовал поиск в Интернете, и обычные 106, 112 кодов, похоже, не работают.

Есть ли конкретный формат кода, который я могу использовать?

+0

Я также смотрел на использование DATEPART, но, кажется, излишне длинный путь сделать это. Просто подумайте, есть ли более простой способ. – Ang

+0

Использование 'DATEPART':' SELECT \t ПРАВО ('00 '+ CAST (DATEPART (DAY, GETDATE()) AS VARCHAR (2)), 2) +' '+ \t DATENAME (MONTH, GETDATE()) + '' + \t CAST (DATEPART (YEAR, GETDATE()) AS VARCHAR (4)) ' –

+0

@Aug Проверьте мой ответ, это может быть полезно для вас. –

ответ

3

Попробуйте FORMAT функцию:

SELECT FORMAT(GETDATE(), 'D', 'en-gb') 

Если ваша версия не поддерживает FORMAT функцию, вы можете сделать это, объединив детали даты:

SELECT 
    RIGHT('00' + CAST(DATEPART(DAY, GETDATE()) AS VARCHAR(2)), 2) + ' ' + 
    DATENAME(MONTH, GETDATE()) + ' ' + 
    CAST(DATEPART(YEAR, GETDATE()) AS VARCHAR(4)) 
+0

i Упрощенный ответ. Но на самом деле ваш комментарий с использованием DATEPART работал отлично. Спасибо. – Ang

2

Использование Функция Format в SQL Server 2012

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

См Изображение для типа данных исх enter image description here

+0

getdate получает текущую дату .. Я попытался заменить это с помощью tourdate_end, который является именем полей, и он не работал. FORMAT (tourdate_end, 'dd-MMMM-yy') – Ang

+0

Каков тип данных tourdate_end? –

0

Попробуйте Преобразовать функцию для сервера SQL:

select convert(varchar(11),cast('2016-03-22 00:00:00.000' as datetime), 106) 
0

Попробуйте этот запрос:

SELECT CONVERT(VARCHAR, CONVERT(DATETIME, '2016-03-22 00:00:00.000'), 106) 

Вам нужно преобразовать в DATETIME тогда вы получите желаемый результат

More Datetime Sql formate

SQLFiddle

Это может помочь вам

Смежные вопросы