-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 -- Version 3.0.0 -- Function: f_minfechadia -- -- Retorna la fecha menor de un rango de fechas para un dia de la semana -- -- Recibe: -- 1. fecha desde -- 2. fecha hasta -- 3. Dia de la semana (Lunes, Martes, Miercoles, Jueves, Viernes, Sabado, Domingo) -- Retorna: -- 1. Fecha que corresponde con el dia de la semana, la menor de las fechas. -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP FUNCTION f_minfechadia (date, date, varchar); CREATE OR REPLACE FUNCTION f_minfechadia (fecha_desde Date, fecha_hasta date, diasemana varchar(10)) RETURNS date AS $$ DECLARE fecha_aux date; BEGIN fecha_aux := fecha_desde; WHILE fecha_aux <= fecha_hasta LOOP IF f_diadelasemana(fecha_aux::date, 1::smallint) = diasemana THEN RETURN fecha_aux; END IF; fecha_aux := fecha_aux + 1; END LOOP; fecha_aux := NULL; RETURN fecha_aux; END; $$ LANGUAGE plpgsql; -- ++++++++++++++++++++++++++++++ Fin Function f_minfechadia() ++++++++++++++++ -- REVOKE EXECUTE ON FUNCTION f_minfechadia (date, date, varchar); GRANT EXECUTE ON FUNCTION f_minfechadia (date, date, varchar) to public; /* select * from f_minfechadia ('2011-03-01'::date, '2011-03-15'::date, 'Miercoles') */