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

Откуда: Екатеринбург
Сообщений: 87
Уважаемые коллеги, добрый день!
Прошу Вашей помощи, вы не смогли бы мне напомнить как вывести дату с наименованием месяца на русском языке т.е. например:
"12 ноября"

В наличие у меня MS SQL 2008

Буду Вам очень признателен и благодарен за оказанную помощь!
12 ноя 20, 13:15    [22230707]     Ответить | Цитировать Сообщить модератору
 Re: Формат даты. Наименование месяца на русском языке  [new]
felix_ff
Member

Откуда: Moscow
Сообщений: 1590
chasovoy96,

select format(getdate(), 'dd MMMM yyyy', 'ru-RU')



а я чет забыл в 2008 может format и не быть.

тогда выкручивайтесь с помощью
set language russian;

select datename(month, getdate());


Сообщение было отредактировано: 12 ноя 20, 13:54
12 ноя 20, 13:53    [22230736]     Ответить | Цитировать Сообщить модератору
 Re: Формат даты. Наименование месяца на русском языке  [new]
chasovoy96
Member

Откуда: Екатеринбург
Сообщений: 87
felix_ff, Благодарю за ответ!
Поступил вот так:
convert(varchar(2), dateonly, 104)+' '+datename(month, dateonly) as 'Дата отключения',
В итоге получаю в своём случае такую картину:

12 Ноябрь, скажите а никак нельзя сделать именно 12 Ноября ???

К сообщению приложен файл. Размер - 15Kb
12 ноя 20, 14:56    [22230790]     Ответить | Цитировать Сообщить модератору
 Re: Формат даты. Наименование месяца на русском языке  [new]
chasovoy96
Member

Откуда: Екатеринбург
Сообщений: 87
т.е. я прошу Вашей помощи как вывести именно (Января, Февраля, Марта, Апреля и.т.д) а сейчас некорректно Январь, Февраль, Март
12 ноя 20, 15:16    [22230812]     Ответить | Цитировать Сообщить модератору
 Re: Формат даты. Наименование месяца на русском языке  [new]
WGA
Member

Откуда:
Сообщений: 408
chasovoy96,

Не проще ли задать свою функцию? С CASE WHEN... и так по 12 месяцам.

Сообщение было отредактировано: 12 ноя 20, 15:23
12 ноя 20, 15:25    [22230821]     Ответить | Цитировать Сообщить модератору
 Re: Формат даты. Наименование месяца на русском языке  [new]
chasovoy96
Member

Откуда: Екатеринбург
Сообщений: 87
WGA, Прошу прощения а можно подсказать как вывести например текущий день - 12 Ноября

case
when dateonly = 'Январь' then 'Января'
when dateonly = 'Февраль' then 'Февраля'
when dateonly = 'Март' then 'Марта'
when dateonly = 'Апрель' then 'Апрель'
when dateonly = 'Май' then 'Мая'
when dateonly = 'Июнь' then 'Июня'
when dateonly = 'Июль' then 'Июля'
when dateonly = 'Август' then 'Августа'
when dateonly = 'Сентябрь' then 'Сентября'
when dateonly = 'Октябрь' then 'Октября'
when dateonly = 'Ноябрь' then 'Ноября'
when dateonly = 'Декабрь' then 'Декабря'
else
''
end as 'Дата отключения ',
12 ноя 20, 15:31    [22230827]     Ответить | Цитировать Сообщить модератору
 Re: Формат даты. Наименование месяца на русском языке  [new]
felix_ff
Member

Откуда: Moscow
Сообщений: 1590
chasovoy96,

ну не умеет он (datename) скольнять падежи, там инфа вроде берется из sys.syslanguages (но не точно)

поэтому тут вариант написать свою какую нибудь скалярку в виде

create function dbo.fn_getstringdate (@date datetime)
returns varchar(255)
as begin
     
return cast(datepart(dd, @date) as varchar(2)) + ' ' + 
        case datepart(mm, @date)
              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 + ' ' + cast(datepart(yyyy, @date) as varchar(4)) + ' года'
end
go

select [dbo].[fn_getstringdate] ('20201112')
12 ноя 20, 15:32    [22230830]     Ответить | Цитировать Сообщить модератору
 Re: Формат даты. Наименование месяца на русском языке  [new]
chasovoy96
Member

Откуда: Екатеринбург
Сообщений: 87
felix_ff, Коллеги благодарю Вас за оказанную помощь! Очень Вам признателен!
Функцию я написал, с этим я разобрался, но прошу прощения возможно дурацкий вопрос, но как ее использовать в своем запросе.

Например у меня есть такой запрос и мне необходимо применить функцию для "Дата отключения"

;WITH CTE AS(
select
se_upload_off.OBJ_FIL as 'Филиал', se_upload_off.OBJ_PO as 'ПО',
se_upload_off.phone as 'Телефон', convert(varchar(10), dateonly, 104) as 'Дата отключения',
ROW_NUMBER() OVER (PARTITION BY se_upload_off.CTG_NM, se_upload_off.OBJ_ADDR, se_upload_off.phone, dateonly, timeonly ORDER BY dateonly) as RN
from se_supa_dg, se_upload_off
)
select [Филиал],[ПО],[Дата отключения], [RN]
from cte
where RN = 1
order by [Дата отключения]
13 ноя 20, 12:18    [22231345]     Ответить | Цитировать Сообщить модератору
 Re: Формат даты. Наименование месяца на русском языке  [new]
felix_ff
Member

Откуда: Moscow
Сообщений: 1590
chasovoy96,

;WITH CTE AS(
select
se_upload_off.OBJ_FIL as 'Филиал', se_upload_off.OBJ_PO as 'ПО',
se_upload_off.phone as 'Телефон', convert(varchar(10), dateonly, 104) as 'Дата отключения',
ROW_NUMBER() OVER (PARTITION BY se_upload_off.CTG_NM, se_upload_off.OBJ_ADDR, se_upload_off.phone, dateonly, timeonly ORDER BY dateonly) as RN
from se_supa_dg, se_upload_off
)
select [Филиал],[ПО],

[dbo].[fn_getstringdate]([Дата отключения]) as [Дата отключения], [RN]
from cte
where RN = 1
order by [Дата отключения]
13 ноя 20, 12:29    [22231353]     Ответить | Цитировать Сообщить модератору
 Re: Формат даты. Наименование месяца на русском языке  [new]
chasovoy96
Member

Откуда: Екатеринбург
Сообщений: 87
felix_ff, Благодарю Вас! Теперь мне стало многое понятно.
13 ноя 20, 12:33    [22231355]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить