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