Ver Mensaje Individual
  #3 (permalink)  
Antiguo 06/04/2007, 04:40
Fabian olmos
 
Fecha de Ingreso: enero-2003
Ubicación: Caracas
Mensajes: 439
Antigüedad: 21 años, 10 meses
Puntos: 0
Re: Fecha De Incorporacion

que nose como sacar el listado. hice esto pero no me sirve porq me trae todas las fecha menores a la introducida por el usuario en el mes. pero yo quiero que me traiga solo los que deberian integrase al trabajo en esa fecha.

PRIMERA PARTE

SELECT a.cedula,(a.apellido||' '||a.nombre) AS nombre,b.cargo,c.ubicacion,d.ffin,acceso.dia_incor poracion(d.ffin,'2007-04-16'::date)
FROM acceso.empleado a
INNER JOIN acceso.cargo b ON (a.cod_cargo=b.cod_cargo)
INNER JOIN acceso.ubicacion c ON (a.cod_ubic=c.cod_ubic)
INNER JOIN acceso.permisos d ON (a.cedula=d.cedula)
WHERE

('2007-04-16'::date NOT IN (SELECT (extract(year FROM NOW())||'-'||a.mes||'-'||a.dia)::date FROM acceso.dias_festivos a))
AND (EXTRACT(DOW FROM '2007-04-16'::date) NOT IN (0,6) ) AND EXTRACT(MONTH FROM '2007-04-05'::date)=EXTRACT(MONTH FROM d.ffin)
AND d.ffin<='2007-04-16'::date

SEGUNDA PARTE

CREATE OR REPLACE FUNCTION acceso.dia_incorporacion(date,date) RETURNS DATE AS $$
DECLARE
fecha_fin_de_permiso ALIAS FOR $1;
fecha_de_consulta ALIAS FOR $2;
fecha_de_incorporacion DATE;
BEGIN

fecha_de_incorporacion:=( SELECT (fecha_fin_de_permiso + dia ) AS FECHA
FROM GENERATE_SERIES(1, fecha_de_consulta - fecha_fin_de_permiso) AS dia
WHERE
(EXTRACT (DOW FROM (fecha_fin_de_permiso + dia ))) NOT IN (0,6)
AND
(fecha_fin_de_permiso + dia ) NOT IN
(SELECT (extract(year FROM NOW())||'-'||a.mes||'-'||a.dia)::date FROM acceso.dias_festivos a)
ORDER BY FECHA DESC LIMIT 1 );


RETURN fecha_de_incorporacion;
END; $$ LANGUAGE 'plpgsql';