viernes, 5 de julio de 2013

Edad en Dias Meses Años usando java y mysql

En ocasiones es necesario saber la edad de una persona en cierta fecha, para esto existen diversas alternativas dependiendo de las herramientas con las que contamos.
En ésta ocasión les muestro la forma de hacerlo usando Java y una conexión a una base de datos MySql.
Para que el método descrito aqui funcione es necesario que se cuente con la conexión MySql ya creada y conectada y las fechas inicial y final. La fecha inicial puede ser la fecha de nacimiento y la final la fecha actual.
Para que el método sea lo mas amplio posible se pasa como parámetro ambas fechas.

public ResultSet DMAdiferencia(String inicio, String fin) {
try {
ResultSet diferencia = this.derby.createStatement().executeQuery(""
+ "SELECT   {fn TIMESTAMPDIFF(SQL_TSI_YEAR,{ts '" + inicio + " 00:00:00' },{ts '" + fin + " 00:00:00'}) } AS ANIOS, "
+ " ( ( {fn TIMESTAMPDIFF(SQL_TSI_MONTH,{ts '" + inicio + " 00:00:00'},{ts '" + fin + " 00:00:00'})}) -  ( {fn TIMESTAMPDIFF(SQL_TSI_YEAR,{ts '" + inicio + " 00:00:00'},{ts '" + fin + " 00:00:00'}) } * 12)) AS MESES, "
+ " -( {fn TIMESTAMPDIFF(SQL_TSI_DAY,{ts '" + fin + " 00:00:00'},"
+ "         {fn TIMESTAMPADD ( SQL_TSI_MONTH,"
+ "              (({fn TIMESTAMPDIFF(SQL_TSI_MONTH,{ts '" + inicio + " 00:00:00'},{ts '" + fin + " 00:00:00'})}) - ( {fn TIMESTAMPDIFF(SQL_TSI_YEAR,{ts '" + inicio + " 00:00:00'},{ts '" + fin + " 00:00:00'})  } )* 12 ),"
+ "             {fn TIMESTAMPADD( SQL_TSI_YEAR,"
+ "                 ({fn TIMESTAMPDIFF(SQL_TSI_YEAR,{ts '" + inicio + " 00:00:00'},{ts '" + fin + " 00:00:00'})}), {ts '" + inicio + " 00:00:00'} "
+ "             )}"
+ "         )}"
+ "     )"
+ "}) "
+ "AS DIAS");
return diferencia;

} catch (Exception a) {
a.printStackTrace();
}
return null;
}


Como resultado de éste método se retorna un tipo de dato ResultSet que contiene tres columnas: DIAS, MESES, ANIOS en caso de que no pasara error alguno. El uso del método puede ser mas o menos así:

ResultSet salida= DMAdiferencia("2013-01-01","2013-12-12");

int dias= salida.getInt("DIAS");

int meses=salida.getInt("MESES");

int anios= salida.getInt("ANIOS");



Ojo, la fecha debe estar en formato YYYY-MM-DD.

Espero que les sirva para sus proyectos

No hay comentarios:

Publicar un comentario