Calcular la diferencia de años entre dos fechas Oracle SQL

Hola a todos, hoy os voy a explicar como podemos calcular la diferencia de años entre dos fechas en Oracle.

Algo habitual en nuestras base de datos es almacenar fechas y es posible que necesitemos calcular una diferencia de años, por ejemplo, la fecha de nacimiento de una persona o la antigüedad de un empleado en una empresa.

Partiendo de esta base de datos:

CREATE TABLE PERSONA (
    NOMBRE VARCHAR2(20) PRIMARY KEY,
    FECHA_NAC DATE 
);

INSERT INTO PERSONA VALUES('FERNANDO', TO_DATE('05/02/1990', 'DD/MM/YYYY'));
INSERT INTO PERSONA VALUES('MANUEL', TO_DATE('03/11/1992', 'DD/MM/YYYY'));
INSERT INTO PERSONA VALUES('ALBERTO', TO_DATE('21/01/2001', 'DD/MM/YYYY'));
INSERT INTO PERSONA VALUES('ALFREDO', TO_DATE('15/12/1981', 'DD/MM/YYYY'));
INSERT INTO PERSONA VALUES('JESUS', TO_DATE('17/04/2005', 'DD/MM/YYYY'));
INSERT INTO PERSONA VALUES('EDUARDO', TO_DATE('27/10/1960', 'DD/MM/YYYY'));

Para calcular los años entre la fecha de hoy y la fecha de nacimiento de la persona, usaremos la función month_between para calcular los meses entre dos fechas y después lo dividimos entre 12.

Como el resultado puede devolver un decimal, usaremos la función floor para redondear a la baja, por ejemplo, si el valor es 31,89 con floor es 31.

SELECT floor(months_between(SYSDATE, FECHA_NAC) /12) as edad FROM persona;

Este seria el resultado:

Espero que os sea de ayuda. Si tenéis dudas, preguntad. Estamos para ayudarte.

Compartir

Deja una respuesta

Tu dirección de correo electrónico no será publicada.