En efecto Señores también me pareció divertido y bueno aquí otra
solución.

create or replace function DomingosEntreFechas(date, date)
RETURNS integer
AS $BODY$
DECLARE
   FechaParamDesde ALIAS FOR $1;
   FechaParamHasta ALIAS FOR $2;
   FechaDesde date;
   FechaHasta date;
   NDomingos integer;
BEGIN
   FechaDesde = FechaParamDesde;
   FechaHasta = FechaParamHasta;
   IF (FechaHasta < FechaDesde) THEN
      FechaHasta = FechaParamDesde;
      FechaDesde = FechaParamHasta;
   END IF;
   NDomingos = 0;
   LOOP
      EXIT WHEN FechaDesde > FechaHasta;
      IF EXTRACT(DOW FROM FechaDesde) = 0 THEN
         NDomingos = NDomingos + 1;
         FechaDesde = FechaDesde + 7;
      ELSE
         FechaDesde = FechaDesde + 1;
      END IF;
   END LOOP;
   RETURN NDomingos;
END;
$BODY$ LANGUAGE 'plpgsql';

Prueba:

SELECT DomingosEntreFechas('2009-01-01', '2009-01-31')
4
SELECT DomingosEntreFechas('2009-01-04', '2009-01-04')
1

Desde Bogotá Colombia. Carlos Beltrán V.

--
TIP 2: puedes desuscribirte de todas las listas simult�neamente
    (env�a "unregister TuDirecci�nDeCorreo" a majord...@postgresql.org)

Reply via email to