как настроить формат sql datetime?

#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