Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Преобразование даты (месяц прописью)  [new]
XXL
Member

Откуда: Москва, Россия
Сообщений: 352
Здравствуйте.
У меня имеется дата Datetime. Например, 16.05.1988.
Мне нужно получить: 16 мая 1988 г. Как это сделать?
Заранее большое спасибо:))
14 июл 10, 15:17    [9103135]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование даты (месяц прописью)  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
автор
Как это сделать?


Это лучше сделать в клиентском приложении, ибо T-SQL не слишком предназначен для форматирования вывода.
14 июл 10, 15:21    [9103200]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование даты (месяц прописью)  [new]
Konst_One
Member

Откуда:
Сообщений: 11593
можете ф-юю свою написать, которая будет дату к нужному вами формату преобразовывать.
14 июл 10, 15:22    [9103216]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование даты (месяц прописью)  [new]
XXL
Member

Откуда: Москва, Россия
Сообщений: 352
Думала, что можно сделать проще, но если еще кому-то надо будет, то вот функция, которая выводит всю дату прописью:

ALTER FUNCTION [dbo].[GetDateWord]
	(
		@dt DATETIME
	)
	RETURNS NVARCHAR(100)
	AS
	BEGIN
	DECLARE @str NVARCHAR(100)
	 
	SELECT
	@str=CASE DATEPART(dd, @dt)
	WHEN 1 THEN 'Первого '
	WHEN 2 THEN 'Второго '
	WHEN 3 THEN 'Третьего '
	WHEN 4 THEN 'Четвертого '
	WHEN 5 THEN 'Пятого '
	WHEN 6 THEN 'Шестого '
	WHEN 7 THEN 'Седьмого '
	WHEN 8 THEN 'Восьмого '
	WHEN 9 THEN 'Девятого '
	WHEN 10 THEN 'Десятого '
	WHEN 11 THEN 'Одиннадцатого '
	WHEN 12 THEN 'Двенадцатого '
	WHEN 13 THEN 'Тринадцатого '
	WHEN 14 THEN 'Четырнадцатого '
	WHEN 15 THEN 'Пятнадцатого '
	WHEN 16 THEN 'Шестнадцатого '
	WHEN 17 THEN 'Семнадцатого '
	WHEN 18 THEN 'Восемнадцатого '
	WHEN 19 THEN 'Девятнадцатого '
	WHEN 20 THEN 'Двадцатого '
	WHEN 21 THEN 'Двадцать первого '
	WHEN 22 THEN 'Двадцать второго '
	WHEN 23 THEN 'Двадцать третьего '
	WHEN 24 THEN 'Двадцать четвертого '
	WHEN 25 THEN 'Двадцать пятого '
	WHEN 26 THEN 'Двадцать шестого '
	WHEN 27 THEN 'Двадцать седьмого '
	WHEN 28 THEN 'Двадцать восьмого '
	WHEN 29 THEN 'Двадцать девятого '
	WHEN 30 THEN 'Тридцатого '
	WHEN 31 THEN 'Тридцать первого '
	END
	+
	CASE DATEPART(mm, @dt)
	WHEN 1 THEN 'января'
	WHEN 2 THEN 'февраля'
	WHEN 3 THEN 'марта'
	WHEN 4 THEN 'апреля'
	WHEN 5 THEN 'мая'
	WHEN 6 THEN 'июня'
	WHEN 7 THEN 'июля'
	WHEN 8 THEN 'августа'
	WHEN 9 THEN 'сентября'
	WHEN 10 THEN 'октября'
	WHEN 11 THEN 'ноября'
	WHEN 12 THEN 'декабря'
	END
	+' '+
	CASE LEFT(DATEPART(yy, @dt),2)
	WHEN 19 THEN 'одна тысяча девятьсот '
	WHEN 20 THEN 'две тысячи '
	WHEN 21 THEN 'две тысячи сто '
	END
	+
	CASE WHEN RIGHT(DATEPART(yy, @dt), 2) IN
	(10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 30, 40, 50, 60, 70, 80, 90)
	THEN
	CASE RIGHT(DATEPART(yy, @dt), 2)
	WHEN 10 THEN 'десятого'
	WHEN 11 THEN 'одиннадцатого'
	WHEN 12 THEN 'двенадцатого'
	WHEN 13 THEN 'тринадцатого'
	WHEN 14 THEN 'четырнадцатого'
	WHEN 15 THEN 'пятнадцатого'
	WHEN 16 THEN 'шестнадцатого'
	WHEN 17 THEN 'семнадцатого'
	WHEN 18 THEN 'восемнадцатого'
	WHEN 19 THEN 'девятнадцатого'
	WHEN 20 THEN 'двадцатого'
	WHEN 30 THEN 'трицатого'
	WHEN 40 THEN 'сорокового'
	WHEN 50 THEN 'пятидесятого'
	WHEN 60 THEN 'шестидесятого'
	WHEN 70 THEN 'семидесятого'
	WHEN 80 THEN 'восьмидесятого'
	WHEN 90 THEN 'девяностого'
	END
	 
	ELSE
	 
	CASE RIGHT (DATEPART(yy, @dt),2)/10
	WHEN 2 THEN 'двадцать'
	WHEN 3 THEN 'тридцать'
	WHEN 4 THEN 'сорок'
	WHEN 5 THEN 'пятьдесят'
	WHEN 6 THEN 'шестьдесят'
	WHEN 7 THEN 'семьдесят'
	WHEN 8 THEN 'восемьдесят'
	WHEN 9 THEN 'девяносто'
	END
	+
	CASE RIGHT (DATEPART(yy, @dt),1)
	WHEN 1 THEN 'первого'
	WHEN 2 THEN 'второго'
	WHEN 3 THEN 'третьего'
	WHEN 4 THEN 'четвертого'
	WHEN 5 THEN 'пятого'
	WHEN 6 THEN 'шестого'
	WHEN 7 THEN 'седьмого'
	WHEN 8 THEN 'восьмого'
	WHEN 9 THEN 'девятого'
	END
	END


	+' года'
	 
	 
	RETURN @str
	 
	END
14 июл 10, 15:43    [9103500]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование даты (месяц прописью)  [new]
tarrus
Member

Откуда: Bergen
Сообщений: 831
XXL,

Все давно уже сделали за вас, работает для 2005, 2008:

SET LANGUAGE Russian;
DECLARE @Date DATETIME
SET @Date= '2010-01-01';
SELECT DATENAME(M,@Date),CONVERT(NVARCHAR(30),@Date,113)
14 июл 10, 16:04    [9103742]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование даты (месяц прописью)  [new]
Konst_One
Member

Откуда:
Сообщений: 11593
tarrus
XXL,

Все давно уже сделали за вас, работает для 2005, 2008:

SET LANGUAGE Russian;
DECLARE @Date DATETIME
SET @Date= '2010-01-01';
SELECT DATENAME(M,@Date),CONVERT(NVARCHAR(30),@Date,113)


автору совсем не это нужно было
14 июл 10, 16:08    [9103776]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование даты (месяц прописью)  [new]
tarrus
Member

Откуда: Bergen
Сообщений: 831
Konst_One
tarrus
XXL,

Все давно уже сделали за вас, работает для 2005, 2008:

SET LANGUAGE Russian;
DECLARE @Date DATETIME
SET @Date= '2010-01-01';
SELECT DATENAME(M,@Date),CONVERT(NVARCHAR(30),@Date,113)


автору совсем не это нужно было


Достаточно применить к моему примеру функцию LEFT и сконкатенировать c ' г.'. Или еще немного напильником подработать индивидуально. Направление задано, доделать 15 минут.
14 июл 10, 16:25    [9104004]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Преобразование даты (месяц прописью)  [new]
Lithium
Member

Откуда: Волгодонск
Сообщений: 28
Konst_One,

а мне как раз это нужно было :)
5 мар 12, 09:45    [12193462]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Преобразование даты (месяц прописью)  [new]
DJhohol
Member

Откуда:
Сообщений: 1
CREATE FUNCTION DateStr
(
	@DD date
)
RETURNS varchar(max)
AS
BEGIN
	Declare @S varchar(max)
	if @DD is not null begin
		Set @S = Convert(varchar(2),DAY(@DD)) + ' ' + DATENAME(M,@DD) + ' ' + Convert(varchar(4),YEAR(@DD)) + ' г.'
	end
	Return @S
END
26 дек 13, 11:25    [15348972]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование даты (месяц прописью)  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6723
DJhohol,

Какую вы цель преследовали? Поделится с сообществом хорошим кодом?
26 дек 13, 14:00    [15350063]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить