Преобразование формата даты в формат DD / MMM/YYYY в SQL Server

у меня есть запрос в SQL, я должен получить дату в формате dd/mmm/yy

пример: 25/jun/2013.

Как я могу преобразовать его для SQL server?

8 ответов


Я не уверен, что есть точное совпадение в нужный формат. Но вы можете сблизиться с convert() и стиль 106. Затем замените пробелы:

SELECT replace(convert(NVARCHAR, getdate(), 106), ' ', '/')

уже несколько ответов и типов форматирования для SQL server 2008. Но этот метод несколько неоднозначен, и вам будет сложно запомнить номер относительно конкретного формата даты. Вот почему в следующих версиях SQL server есть лучший вариант.

если вы используете SQL Server 2012 или выше версии, вы должны использовать Format () функция

FORMAT ( value, format [, culture ] )

с опцией культуры, вы можете указать дату в соответствии с ваши читатели.

DECLARE @d DATETIME = '10/01/2011';
SELECT FORMAT ( @d, 'd', 'en-US' ) AS 'US English Result'
      ,FORMAT ( @d, 'd', 'en-gb' ) AS 'Great Britain English Result'
      ,FORMAT ( @d, 'd', 'de-de' ) AS 'German Result'
      ,FORMAT ( @d, 'd', 'zh-cn' ) AS 'Simplified Chinese (PRC) Result'; 

SELECT FORMAT ( @d, 'D', 'en-US' ) AS 'US English Result'
      ,FORMAT ( @d, 'D', 'en-gb' ) AS 'Great Britain English Result'
      ,FORMAT ( @d, 'D', 'de-de' ) AS 'German Result'
      ,FORMAT ( @d, 'D', 'zh-cn' ) AS 'Chinese (Simplified PRC) Result';

US English Result Great Britain English Result  German Result Simplified Chinese (PRC) Result
----------------  ----------------------------- ------------- -------------------------------------
10/1/2011         01/10/2011                    01.10.2011    2011/10/1

US English Result            Great Britain English Result  German Result                    Chinese (Simplified PRC) Result
---------------------------- ----------------------------- -----------------------------  ---------------------------------------
Saturday, October 01, 2011   01 October 2011               Samstag, 1. Oktober 2011        2011年10月1日

для решения OP мы можем использовать следующий формат, о котором уже упоминал @Martin Smith:

FORMAT(GETDATE(), 'dd/MMM/yyyy', 'en-us')

некоторые примеры форматов даты:

enter image description here

Если вы хотите больше форматов даты SQL server, вы должны посетить:

  1. пользовательский формат даты и времени
  2. стандартный формат даты и времени

мы можем конвертировать дату во многие форматы, такие как

SELECT convert(varchar, getdate(), 106)

возвращает dd mon yyyy

Здесь это может помочь вам


попробуйте использовать следующий запрос.

SELECT REPLACE(CONVERT(VARCHAR(11),GETDATE(),6), ' ','/');  

результат: 20 / Jun / 13

SELECT REPLACE(CONVERT(VARCHAR(11),GETDATE(),106), ' ','/');  

результат: 20 / Jun / 2013


принятый ответ уже дает лучшее решение, используя встроенные методы форматирования в 2008 году.

следует отметить,что возвращаемые результаты зависят от языка входа в систему.

SET language Russian

SELECT replace(CONVERT(NVARCHAR, getdate(), 106), ' ', '/') 

возвращает

06/апр/2015

на момент написания.

для людей, сталкивающихся с этим вопросом в более поздних версиях SQL Server, метод, который позволяет избежать этой проблемы-и необходимость REPLACE is

FORMAT(GETDATE(),'dd/MMM/yyyy', 'en-us')

на 2005+ it можно было бы написать CLR UDF, который принял DateTime, шаблон форматирования и культуру для имитации того же.


попробуй такое

select convert(varchar,getdate(),100)

третий параметр-формат, диапазон - от 100 to 114, любой должен работать на вас.

Если вам нужна дата в dd/mmm/yyyy используйте этот:

replace(convert(char(11),getdate(),113),' ','-')

заменить getdate() С именем столбца. Это сработало для меня.


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

select replace ( convert(varchar,getdate(),106),' ','/')

любой, кто пытается вручную ввести переменную типа даты sql server, использует этот формат при вводе :

'yyyy-mm-dd'