2009-10-01 2 views

ответ

5

использовать это:

select CONVERT(nvarchar(50), DATENAME(m, getdate()) 
           + ', ' 
           + DATENAME(yyyy, getdate()) 
      ) 

ВЫВОД:

-------------------------------------------------- 
October, 2009 

(1 row(s) affected) 
+0

очень хороший ответ ... –

+0

Если он хочет поместить его в переменную, уже объявленную как nvarchar, конвертер не нужен, поскольку он будет неявно преобразовываться во время размещения информации в переменной. Единственное место, где я знаю, где данные varchar неявно конвертируются, находится в SSIS. – HLGEM

0

Один из способов будет использовать datename, чтобы извлечь куски необходимые вам в формате имени, так:

выберите Convert (NVARCHAR, datename (м, GETDATE())) + N '' + Преобразование (NVARCHAR, datename (уу, getdate()))

И замените getdate() на вашу переменную/поле даты.

+0

было бы более эффективно конвертировать все в одно время в nvarchar. также не забывайте, если вы не укажете длину nvarchar в CONVERT, по умолчанию она будет равна 30 и будет усекаться. например, запустите этот _SELECT CONVERT (nvarchar, 'abcdefghijklmnopqrstuvwxyz1234567890') _, вы получите только первые 30 символов и не увидите усеченных символов: «567890», и нет ошибки или предупреждения. –

0

Функция DateName обеспечит форматирование вам понадобится:

DATENAME(m, date) + ', ' + DATENAME(yyyy, date) 

Преобразование в NVARCHAR определенного размера можно сделать с помощью функции литом:

CAST(value AS nvarchar[30]) 
+1

Datepart будет возвращать только цифры, необходимо указать имя –

+0

Datepart - это числовое представление, а не название, к сожалению. – Andrew

+0

Исправлено. Спасибо. –

1

Попробуйте

DECLARE @DateTime DATETIME 

SET @DateTime = '01 Oct 2009' 

SELECT @DateTime 

SELECT DATENAME(mm, @DateTime) + ', ' + CAST(DATEPART(yy, @DateTime) AS VARCHAR(4)) 
+0

не возвращает nvarchar в качестве запросов OP –

+0

, затем отбрасывает его или присваивает переменной nvarchar ... –

0

Попробуйте следующий запрос:

Select case Convert(int, day(getdate())) when 1 then '1st' when 2 then '2nd' 
when 3 then '3rd' else Convert(varchar, day(getdate()))+'th' end +' '+ Convert(varchar, Datename(m,getdate()))+' ' +Convert(varchar, Datename(yy,getdate())) as Date 

Вы можете заменить GETDATE() с любой другой день.

Пожалуйста, проверьте это.

Смежные вопросы