#c# #sql #sql-server #tsql #sql-server-2008
#c# #sql #sql-сервер #tsql #sql-server-2008
Вопрос:
Мне нужно преобразовать date time
в nvarchar
на sql server, например 2011 Oct 24
, но я не могу преобразовать в это. Кто-нибудь может помочь?
Ответ №1:
Нет формата, который точно соответствует. Вы можете использовать substring
для сборки формата вручную:
select substring(convert(varchar(20),getdate(),106),8,4) ' '
substring(convert(varchar(20),getdate(),106),4,3) ' '
substring(convert(varchar(20),getdate(),106),1,3)
Примечание. Выполнение форматирования в SQL намного сложнее, чем на стороне клиента, в C #, Java или Ruby.
Комментарии:
1. 1: Полностью согласен с форматированием данных в клиенте, если это вообще возможно.
2. Для этого вам не нужно использовать subsrting . вы можете получить все части отдельно, например: ВЫБЕРИТЕ DATENAME(ГГГГ,GETDATE()) ‘ ‘ ПРИВЕДЕНИЕ (DATENAME(ММ,GETDATE())) КАК VARCHAR(3)) ‘ ‘ DATENAME(DD,GETDATE())
Ответ №2:
Для точного формата, который вам требуется, вам нужно получить все части (день, месяц и год) даты отдельно, например :
SELECT DATENAME(YYYY,GETDATE()) ' ' CAST(DATENAME(MM,GETDATE()) AS VARCHAR(3)) ' ' DATENAME(DD,GETDATE())
Вы также можете использовать функцию преобразования для других форматов, таких как :
SELECT CONVERT(VARCHAR(20),GETDATE(),106)
Комментарии:
1. Печатает
24 Oct 2011
вместо2011 Oct 24
Ответ №3:
SELECT CONVERT(nvarchar(10), getdate(), 102)
Вы можете найти все коды преобразования здесь:
http://msdn.microsoft.com/en-us/library/ms187928.aspx
Ответ №4:
WITH d (d) AS (SELECT GETDATE())
SELECT DATENAME(YEAR, d) ' ' CONVERT(NVARCHAR(6), d, 109)
FROM d
Вывод:
------------------------------------- 24 октября 2011