Преобразование формата даты в формат 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')
некоторые примеры форматов даты:
Если вы хотите больше форматов даты SQL server, вы должны посетить:
мы можем конвертировать дату во многие форматы, такие как
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()
С именем столбца. Это сработало для меня.
любой, кто пытается вручную ввести переменную типа даты sql server, использует этот формат при вводе :
'yyyy-mm-dd'