CftClub.ru
Клуб специалистов ЦФТ-Банк

Функция для склонения наименования месяца по падежам.

 
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Справочник PL/PLUS: Функции, примеры, приёмы
Предыдущая тема :: Следующая тема  
Автор Сообщение
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. Написать такую функцию локально самому.


Был использован именно этот вариант.
Показать сообщения:   
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Справочник PL/PLUS: Функции, примеры, приёмы Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Рейтинг@Mail.ru