Se puede calcular la edad de muchas maneras, pero la más cómoda es utilizando la función intck()
. Esta función calcula distintas entre fechas expresadas en distintas unidades de medidas: días, meses, años, etc. Ya he escrito algo sobre esta función en este artículo.
Para calcular la edad natural a fecha de hoy podemos utilizar la siguiente fórmula, que es muy simple:
edad = intck('year',fec_nacimiento,date(),'c');
En la función anterior, ‘year’ indica que se va a medir la diferencia entre las fechas en años, el segundo parámetro es la fecha de nacimiento que tengamos. En el tercero indicamos la fecha de hoy con la función date() y finalmente, el cuarto parámetro indica que la diferencia en años resultante tiene que ser a años cumplidos, o sea, que tener 35 años y 11 meses implica que la función devolverá 35 años.
Si queremos calcular esa edad a una fecha concreta del pasado, o del futuro, solo debemos sustituir el segundo parámetro por la fecha que queramos, por ejemplo ’31dec2022’d:
edad = intck('year',fec_nacimiento,'31dec2022'd,'c');
Finalmente, hay otra edad que se calcula en el mundo de los seguros que es la edad técnica y que sirve para calcular el riesgo asociado a un individuo y su prima correspondiente. Esta edad técnica es el redondeo de la edad natural al entero más cercano, o sea, 35 años y 7 meses implica que tienes 36 años técnicos. Esto se calcularía así:
edad_tecnica = intck('year',fec_nacimiento,date());
edad_tecnica2 = round((date() - fec_nacimiento) / 365.25);
Entre estas dos últimas hay una pequeña diferencia cuando te aproximas a la fecha de cumpleaños, pero he visto la segunda muchas veces en muchos ejemplos de código. Yo, prefiero la primera, que es más exacta.