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.