Функция для склонения наименования месяца по падежам. 
	   
	     | 
   
 
	
		| Предыдущая тема :: Следующая тема   | 
	 
	
	
		| Автор | 
		Сообщение | 
	 
	
		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. Написать такую функцию локально самому.  | 	  
 
 
Был использован именно этот вариант. | 
			 
		  | 
	 
	
		  | 
	 
	
		 | 
	 
 
  
	 
	    
	   | 
	
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
  | 
   
 
		 |