Calcular antigüedad de un trabajador

Necesito calcular antigüedad de un trabajador utilizando la fecha de contratación del empleado y la fecha actual, se debe considerar solo la cantidad de años (sin redondeo)
La función deberá retornar 0(cero) si el empleado tiene menos de 3 años de antigüedad.

2 respuestas

Respuesta

Crea un módulo nuevo y pega esta función:

Public Function fncAntiguedad(laFechaIngreso as Date) As Integer

fncAntiguedad=Datediff("yyyy",laFechaIngreso,Date)

If fncAntiguedad<3 Then fncAntiguedad=0

End Function

Luego esa función la puedes usar en cualquier parte de tu BD: consultas, informes, formularios... como si fuera una de las funciones integradas de Access. Sólo tienes que pasarle como parámetro la Fecha de ingreso.

Por ejemplo, si lo haces en una consulta, añadirías en una columna nueva:

Antiguedad: fncAntiguedad([fecha de contratacion])

Vaya!, acabo de ver que tu pregunta iba dirigida a Oracle y no Access, por lo que mi respuesta no te sirve. Disculpa

Respuesta

Crea la siguiente funcion (función es para Oracle):

Create or replace function tiempo_antiguedad  (fec_ing in date)
return number is

   vantiguo number;

Begin

   select case

       when trunc(MONTHS_BETWEEN(SYSDATE,fec_ing)/12)<3

       then 0

       else trunc(MONTHS_BETWEEN(SYSDATE,fec_ing)/12)

      end into vantiguo

    from dual;

    RETURN vantiguo;

END;

Luego genera un sinónimo publico y dale permisos a todos:

CREATE PUBLIC SYNONYM TIEMPO_ANTIGUEDAD FOR schema.TIEMPO_ANTIGUEDAD; 

GRANT EXECUTE ON TIEMPO_ANTIGUEDAD TO PUBLIC;  

Luego para llamar la función desde un query, envías la fecha de contratación:

SELECT TIEMPO_ANTIGUEDAD('13/07/1975') FROM DUAL;

o con tu tabla de empleados:

SELECT TIEMPO_ANTIGUEDAD(campo_fecha_contratacion) FROM tabla_empleados;

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas