У меня есть запрос в sql, мне нужно получить дату в формате dd/mmm/yy
Пример: 25/jun/2013
.
Как я могу преобразовать его для SQL-сервера?
У меня есть запрос в sql, мне нужно получить дату в формате dd/mmm/yy
Пример: 25/jun/2013
.
Как я могу преобразовать его для SQL-сервера?
Я не уверен, что есть точное соответствие для формата, который вы хотите. Но вы можете приблизиться к convert()
и style 106
. Затем заменим пробелы:
SELECT replace(convert(NVARCHAR, getdate(), 106), ' ', '/')
Уже существует несколько ответов и типов форматирования для SQL-сервера 2008 года. Но этот метод несколько неоднозначен, и вам будет сложно запомнить число в отношении конкретных Формат даты. Вот почему в следующих версиях SQL-сервера есть лучший вариант.
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-сервера, вы должны посетить:
мы можем конвертировать дату во многие форматы, например
SELECT convert(varchar, getdate(), 106)
Это возвращает dd mon yyyy
Подробнее здесь Это может помочь вам
Принятый ответ уже дает лучшее решение, используя встроенные методы форматирования в 2008 году.
Следует отметить, что возвращенные результаты зависят, однако, от языка входа.
SET language Russian
SELECT replace(CONVERT(NVARCHAR, getdate(), 106), ' ', '/')
Возвращает
06/апр/2015
на момент написания.
Для людей, сталкивающихся с этим вопросом в более поздних версиях SQL Server, метод, который позволяет избежать этой проблемы, а необходимость REPLACE
-
FORMAT(GETDATE(),'dd/MMM/yyyy', 'en-us')
В 2005 году можно было бы написать CLR UDF, который принял бы DateTime, шаблон форматирования и культуру, чтобы имитировать то же самое.
Попробуйте использовать следующий запрос.
SELECT REPLACE(CONVERT(VARCHAR(11),GETDATE(),6), ' ','/');
Результат: 20/Июнь/13
SELECT REPLACE(CONVERT(VARCHAR(11),GETDATE(),106), ' ','/');
Результат: 20/Июнь/2013
Попробуйте это
select convert(varchar,getdate(),100)
Третий параметр - формат, диапазон от 100
до 114
, любой из них должен работать для вас.
Если вам нужна дата в dd/mmm/yyyy
, используйте следующую команду:
replace(convert(char(11),getdate(),113),' ','-')
Замените getdate()
своим именем столбца. Это сработало для меня.
Попробуйте следующее:
select replace ( convert(varchar,getdate(),106),' ','/')
Любой, кто пытается вручную ввести дату в переменную sql-сервера, использует этот формат при вводе:
'yyyy-mm-dd'
Вы можете использовать это query-
SELECT FORMAT (getdate(), 'dd/MMM/yy') as date
Надеюсь, этот запрос поможет вам.
Спасибо!!