Ver Mensaje Individual
  #14  
Antiguo 19-01-2007
Avatar de jwmoreira
jwmoreira jwmoreira is offline
Miembro
 
Registrado: jun 2004
Posts: 83
Reputación: 20
jwmoreira Va por buen camino
Agregue un argumento mas para meses y cambie el procedimiento:
Código:
CREATE PROCEDURE SP_RESTA_FECHAS (
    AN_FECHA1 INTEGER,
    AN_FECHA2 INTEGER,
    AV_TIPO CHAR (1) CHARACTER SET WIN1251)
RETURNS (
    NUM_DIAS INTEGER)
AS
  declare variable vs_fecha1 varchar(10);
  declare variable vs_fecha2 varchar(10);
BEGIN
if( av_tipo = 'M' ) then
  if (substring( cast(an_fecha1 as varchar(8)) from 1 for 4) =
      substring( cast(an_fecha2 as varchar(8)) from 1 for 4)) then
      num_dias =  cast(substring( cast(an_fecha2 as varchar(8)) from 5 for 2) as integer) -
                  cast(substring( cast(an_fecha1 as varchar(8)) from 5 for 2) as integer) + 1;
  else
      num_dias =  cast(substring( cast(an_fecha2 as varchar(8)) from 5 for 2) as integer) +
                  (( cast(substring( cast(an_fecha2 as varchar(8)) from 1 for 4) as integer) -
                     cast(substring( cast(an_fecha1 as varchar(8)) from 1 for 4) as integer) ) * 12);
else
begin
  vs_fecha1 = substring( cast(an_fecha1 as varchar(8)) from 5 for 2) || '/'||
              substring( cast(an_fecha1 as varchar(8)) from 7 for 2) || '/'||
              substring( cast(an_fecha1 as varchar(8)) from 1 for 4);
  vs_fecha2 = substring( cast(an_fecha2 as varchar(8)) from 5 for 2) || '/'||
              substring( cast(an_fecha2 as varchar(8)) from 7 for 2) || '/'||
              substring( cast(an_fecha2 as varchar(8)) from 1 for 4);
  num_dias =  cast(:vs_fecha2 As Date) - cast(:vs_fecha1 As Date);
end
SUSPEND;
END

Código SQL [-]select (select num_dias from RESTA(fecha1,fecha2,tipo) From TablaOrigen



Donde Tipo es M=Meses y por default días.

Espero en algo haberte ayudado,
Jorge.
Responder Con Cita