Функция для склонения наименования месяца по падежам.
|
Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
cymtu Участник - экстремал
Вступление в Клуб: 26.03.2008
|
Чт Май 13, 2010 09:17  Функция для склонения наименования месяца по падежам. |
|
Полезность: Нет оценки
|
Подскажите в ЦФТ есть функция для склонения наименования месяца по падежам??????
P.S.
Я имею ввиду есть в цфт уже функция которое выводит название месяца в том или ином падеже??? |
|
 |
prog Эксперт
Вступление в Клуб: 03.03.2008
|
Чт Май 13, 2010 10:11   |
|
Полезность: 2
|
По-моему, нет такой функции.
Есть функция которая возвращает месяц в определенном падеже.
Код: |
[RUNTIME].[TMC_REPORTS].get_month_str(pDate in DATE) |
Хотя, не понимаю, почему ее еще не сочинили. Во многих подсистемах в том или ином виде дублируется код по преобразованию номера месяца в название на русском языке. |
|
 |
pas Профи
Вступление в Клуб: 20.11.2007
|
Чт Май 13, 2010 10:55   |
|
Полезность: 2
|
Согласен с prog, вот даже аналогичная функция в ::[RUNTIME].[PRINT_FORM] :
Код: | /*********************************************************************
возвращает дату в виде 'dd month yyyy "г."', где месяц в родительном падеже
*********************************************************************/
function Date_Str(dDate date, bFull boolean default true) return varchar2
is
vDate_Str varchar2(50);
begin
vDate_Str := to_char(dDate, ' month', 'NLS_DATE_LANGUAGE = RUSSIAN');
if to_number(to_char(dDate, 'mm')) in ( 3, 8 ) then
vDate_Str := rtrim(vDate_Str) || 'а ';
else
vDate_Str := rtrim(vDate_Str, 'йь ') || 'я ';
end if;
if bFull then
vDate_Str := to_char(dDate, 'dd') || vDate_Str || to_char(dDate, 'yyyy "г."');
end if;
return vDate_Str;
end; |
А так не встричал функцию которая переводила бы дату в нужный падеж. |
|
 |
Vovidez Профи
Вступление в Клуб: 27.09.2007
|
Пт Май 14, 2010 04:23  Re: Функция для склонения наименования месяца по падежам. |
|
Полезность: Нет оценки
|
cymtu пишет: | Подскажите в ЦФТ есть функция для склонения наименования месяца по падежам?????? |
::[RUNTIME].[VIEWFUN].DAT_STR:
Код: |
/*********************************************************************
Возвращает дату в виде строки вида "1 мая 1999 г.",
если sign = null
или возвращает "29 дек 01" - если sign = '1'
*********************************************************************/
function DAT_STR(
dat [DATE]
,sign varchar2(1) default null
)return varchar2(25);
pragma RESTRICT_REFERENCES(DAT_STR, WNDS, WNPS);
|
P.S. Подозреваю, что не придумали функцию склонения месяцев по всем падежам, потому как кому это нужно? Мы же не сочинение писать собираемся "Однажды морозным февралем, я из лесу вышел...", "А поговорим-ка мы сегодня с вами, ребятки, о прекрасном месяце - об августе!"... ну, и т.п...
Во всех же официальных документах и отчетах месяц используется в родительном падеже. Кто-нибудь может привести пример склонения месяца в отличных от родительного падежах в отчетах Банковской Системы? Может я и в правду чего-то не знаю... |
|
 |
cymtu Участник - экстремал
Вступление в Клуб: 26.03.2008
|
Пт Май 14, 2010 08:21   |
|
Полезность: Нет оценки
|
::[RUNTIME].[VIEWFUN].DAT_STR:
эту функцию я знаю.
Если вы внимательно читали вопрос, то мне нужно было только наименование месяца (да, действительно в родительном падеже), а не сама дата в родительном падеже. |
|
 |
Vovidez Профи
Вступление в Клуб: 27.09.2007
|
Пт Май 14, 2010 09:33   |
|
Полезность: Нет оценки
|
cymtu пишет: | мне нужно было только наименование месяца (да, действительно в родительном падеже), а не сама дата в родительном падеже. |
Действительно готовой функции в бибиотеках дистрибутива нет.
Но у Вас есть 2 варианта:
1. Написать такую функцию локально самому.
2. Использовать существующие функции перевода даты, например, так:
Код: | str varchar2(20);
Month varchar2(10);
begin
Month := 'Август';
str := ::[RUNTIME].[VIEWFUN].DAT_STR(TO_DATE(Month,'MONTH'));
str := Substr(str, InStr(str, ' ')+1);
str := Substr(str, 0, Instr(str, ' '));
stdio.put_line_buf(str);
end;
|
P.S. Писал быстро, поэтому может не оптимально, но идея должна быть понятна... :о)) |
|
 |
cymtu Участник - экстремал
Вступление в Клуб: 26.03.2008
|
Пт Май 14, 2010 10:23   |
|
Полезность: Нет оценки
|
Цитата: | 1. Написать такую функцию локально самому. |
Был использован именно этот вариант. |
|
 |
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
|