70
 
17/08/2019

Función para calcular la diferencia de años entre dos fechas - PLSQL de Oracle

Función para calcular la diferencia de años entre dos fechas - PLSQL de OracleFunción de Oracle que calcula y retorna la diferencia de años entre dos fechas pasadas como parámetros, manejando una exception en caso de ocurrir un error.

Esta función ha sido probada en versiones 9i, 10g y 11g de la plataformas Oracle y su lenguaje de programación procedural y de consultas estructuradas PL/SQL.

El código consiste en pasar dos valores de tipo fecha como argumentos para luego conocer la cantidad de meses que hay entre ambos mediante el uso de la función propia de Oracle, MONTHS_BETWEEN. Posteriormente, el resultado arrojado se divide entre el número 12 que representa el total de meses que tiene un año, y en el caso de que dicho resultado sea un valor decimal entonces será convertido al valor del entero más largo que es igual o menor al número previamente arrojado.

Con esta función es posible conocer la edad de una persona haciendo uso de la fecha de nacimiento y SYSDATE. También sirve para conocer los años de antigüedad que un empleado tiene laborando en una empresa o entidad.

La función requiere de dos parámetros de entrada de tipo "DATE" y retorna un valor numérico. En caso de error retornará cero (0).

Veamos el código de la función.

CREATE OR REPLACE FUNCTION F_ANOS (p_fecini IN DATE, p_fecfin IN DATE)
RETURN NUMBER
IS
/* ************************************************************************************
* Función: f_anos
* Descripción: Permite calcular los años de diferencia entre 2 fechas
* Parámetros: p_fecini Fecha de inicio; p_fecfin Fecha de fin
* Retorna: v_anos Los años
* *********************************************************************************
*/

v_anos NUMBER := 0;
BEGIN

/* Calcula los años de diferencia */
v_anos := FLOOR(MONTHS_BETWEEN(p_fecfin, p_fecini ) / 12);

/* retorna Años */
RETURN v_anos;

EXCEPTION
WHEN OTHERS THEN
RETURN 0;

END F_ANOS;
/


/* Ejecutar F_ANOS */
SELECT F_ANOS(TO_DATE('24-DEC-1990'),SYSDATE) anyos FROM DUAL;

Nota: Si este recurso te ha servido de ayuda recuerda que puedes apoyar mi trabajo realizando una contribución a través de mi perfil de usuario de la página y/o puedes enviar tus comentarios a través del sistema de contacto.
Consulta Lo+ Top de Base De Datos
Todos los titulares en un solo lugar...