Foros del Web » Programación web » PHP »

Calculo de años entre 2 fechas

Estas en el tema de Calculo de años entre 2 fechas en el foro de PHP en Foros del Web. Hola a todos, escribo porque quisiera que me ayudaran con esto: Nesesito calcular el tiempo en años entre 2 fechas que se encuentran en una ...
  #1 (permalink)  
Antiguo 07/08/2005, 15:06
Avatar de lrunge  
Fecha de Ingreso: agosto-2005
Ubicación: En algun lugar de Caracas
Mensajes: 162
Antigüedad: 8 años, 11 meses
Puntos: 2
Calculo de años entre 2 fechas

Hola a todos, escribo porque quisiera que me ayudaran con esto:
Nesesito calcular el tiempo en años entre 2 fechas que se encuentran en una base de datos SQL.

Por ejemplo, quisiera saber como coloco en una pagina PHP el calculo en años desde el 05/04/1982 y 06/08/1996.

Gracias....
  #2 (permalink)  
Antiguo 07/08/2005, 15:45
 
Fecha de Ingreso: noviembre-2002
Ubicación: Mex
Mensajes: 140
Antigüedad: 11 años, 7 meses
Puntos: 0
Fijate que este es un problema muy comun, el calculo de fechas en PHP. Yo en lo particular usé un tiempo una solución Quick And Dirty en JavaScript para hacer tal cosa hasta que encontré por ahi un super script e PHP que se encarga de esas funciones tan molestas y necesarias.

La puedes bajar desde mi site diff.php

Se usa de la siguiente forma:

Código PHP:
       //Las fechas deberán tener un formato legible por la función
    $SQL="SELECT  DATE_FORMAT(a.fecha_inicio,'%d %M %Y'),";
    $SQL.=" DATE_FORMAT(a.fecha_final,'%d %M %Y')";
    $SQL.=" FROM Fechas a";

#Aqui se aplica la función
<?php echo(datediff('d'$row[0] , $row[1], false));?>Dìas de diferencia entre las dos fechas.
En el código de la función se pueden ver todo más explicado.

Saludos.
__________________
escribiendo mi libro de AJAX
  #3 (permalink)  
Antiguo 07/08/2005, 16:34
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.369
Antigüedad: 10 años
Puntos: 97
SQL cuenta con bastantes funciones para el cálculo de fechas y es muy recomendable hacer uso de ellas... tiene su propia función DATE_DIFF(); no es necesario emplear PHP como creo entender plantea efra (consultas, daz formato, extraes fecha y empleas una función PHP... ).
http://dev.mysql.com/doc/mysql/en/da...culations.html
http://dev.mysql.com/doc/mysql/en/da...functions.html
www.mysql-hispano.org

Ahora, lrunge... ¿y cuál es la estructura de tu tabla?, ¿dónde se encuentran dichos campos??.
Suponiendo tienes una misma tabla dos campos distintos de fecha (sean DATE ó DATETIME) y es entre esos campos donde quieres encontrar la diferencia una query así te podrá servir:
Código:
SELECT YEAR(campo_fecha1)-YEAR(campo_fecha2) AS anyo FROM tabla
Entonces en PHP llamas a la etiqueta anyo como cualquier otro campo
Código PHP:
echo $row['anyo']; // Diferencia en años 
Espero haberme explicado....
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #4 (permalink)  
Antiguo 07/08/2005, 17:47
 
Fecha de Ingreso: noviembre-2002
Ubicación: Mex
Mensajes: 140
Antigüedad: 11 años, 7 meses
Puntos: 0
Totalmente de acuerdo con ello pero...
¿Y si las fecha no estan en la base de datos?
Creo que usar una ayuda extra en PHP no afecta en la más mínimo.

Es decir: ¿Que tal si obtienes las dos fechas de un formulario para obtener la diferencia de dos fechas para calcular una cotización?

Ergo:
Imagina por un segundo que la fecha se almacena en un campo varchar que SQL no pude parsear. Extrayendo estos datos y conviertiendolos en PHP y luego aplicar el la función Diff se obtiene lo deseado.

saludos.
__________________
escribiendo mi libro de AJAX
  #5 (permalink)  
Antiguo 07/08/2005, 18:47
Avatar de lrunge  
Fecha de Ingreso: agosto-2005
Ubicación: En algun lugar de Caracas
Mensajes: 162
Antigüedad: 8 años, 11 meses
Puntos: 2
Mi tabla

Ok, no di mucho detalle, pero aqui va:

fijense las fechas estan en una tabla llamada "clientes" y las fechas se almacenan en una fila llamada "fnac".

Lo que quiero es calcular los años trancurridos desde "fnac" hasta el dia de hoy
  #6 (permalink)  
Antiguo 07/08/2005, 18:53
 
Fecha de Ingreso: noviembre-2002
Ubicación: Mex
Mensajes: 140
Antigüedad: 11 años, 7 meses
Puntos: 0
jam1138 ya nos dio la respuesta mi amigo.


Saludos.
__________________
escribiendo mi libro de AJAX
  #7 (permalink)  
Antiguo 07/08/2005, 18:55
Avatar de jmn2k1  
Fecha de Ingreso: noviembre-2001
Ubicación: Buenos Aires...
Mensajes: 489
Antigüedad: 12 años, 8 meses
Puntos: 2
Cita:
Iniciado por efra
¿Y si las fecha no estan en la base de datos?
Creo que usar una ayuda extra en PHP no afecta en la más mínimo.
Es decir: ¿Que tal si obtienes las dos fechas de un formulario para obtener la diferencia de dos fechas para calcular una cotización?
Pero el las tenia en una base de datos, a cada problema su solucion mas eficiente.
Cita:
Iniciado por efra
Ergo:
Imagina por un segundo que la fecha se almacena en un campo varchar que SQL no pude parsear. Extrayendo estos datos y conviertiendolos en PHP y luego aplicar el la función Diff se obtiene lo deseado.
Guardar una fecha en un campo varchar es una cabeceada. (Entiendase por esto, a un error de diseño que facilmente se puede evitar.)
Cita:
Iniciado por lrunge
fijense las fechas estan en una fila llamada "clientes" y las fechas se almacenan en una fila llamada "fecha_nac".

Lo que quiero es calcular los años trancurridos desde "fecha_nac" hasta el dia de hoy
Si los campos "clientes" y "fecha_nac" estan en campos date o datetime el ejemplo de jam1234 sirve, solo cambia los nombres...
__________________
JmN
  #8 (permalink)  
Antiguo 07/08/2005, 19:19
 
Fecha de Ingreso: noviembre-2002
Ubicación: Mex
Mensajes: 140
Antigüedad: 11 años, 7 meses
Puntos: 0
Cita:
Iniciado por jmn2k1
Pero el las tenia en una base de datos, a cada problema su solucion mas eficiente.
Nunca hay soluciones de sobra.


Cita:
Iniciado por jmn2k1
Guardar una fecha en un campo varchar es una cabeceada. (Entiendase por esto, a un error de diseño que facilmente se puede evitar.)
Y todos deseamos la paz mundial.
Cuando damos mantenimiento a sistemas no que nosotros no hicimos y que no podemos modificar, sólo explotar, tenemos que lidiar con cabeceadas y requerimos de una solución, la más eficiente, como tu dices.

Saludos.
__________________
escribiendo mi libro de AJAX
  #9 (permalink)  
Antiguo 07/08/2005, 20:00
Avatar de jmn2k1  
Fecha de Ingreso: noviembre-2001
Ubicación: Buenos Aires...
Mensajes: 489
Antigüedad: 12 años, 8 meses
Puntos: 2
Cita:
Iniciado por efra
Cuando damos mantenimiento a sistemas no que nosotros no hicimos y que no podemos modificar, sólo explotar, tenemos que lidiar con cabeceadas y requerimos de una solución, la más eficiente, como tu dices.
En esos casos, ese tipo de solucion no es la mas eficiente, es la mas rapida.
__________________
JmN
  #10 (permalink)  
Antiguo 07/08/2005, 23:48
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.369
Antigüedad: 10 años
Puntos: 97
Cita:
Iniciado por lrunge
las fechas estan en una fila llamada "clientes" y las fechas se almacenan en una fila llamada "fecha_nac".
"las fechas Y las fechas"?? ¿no te estás contradiciendo? ... lo que sí es un hecho es que no son "filas" sino "campos" ó "columnas"

Cita:
Iniciado por lrunge
Lo que quiero es calcular los años trancurridos desde "fnac" hasta el dia de hoy
Solo faltaría decir que "hoy" lo obtendrías con CURDATE() --puede verse en los enlaces que dejé--, entonces la query a aplicar sería:
Código:
SELECT YEAR(CURDATE())-YEAR(fnac) AS anyos FROM tabla
insistir en que el campo "fnac" deberá ser tipo DATE; adivino que con "fnac" haces referencia a "fecha de nacimiento" y entonces solo te interezará almacenar una fecha y no "un momento" (hora, minuto y segundo específico).

Cita:
Iniciado por jmn2k1
el ejemplo de jam1234 sirve
... ¿a quién se referirá?

Un saludo!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #11 (permalink)  
Antiguo 08/08/2005, 14:29
Avatar de lrunge  
Fecha de Ingreso: agosto-2005
Ubicación: En algun lugar de Caracas
Mensajes: 162
Antigüedad: 8 años, 11 meses
Puntos: 2
Fe de errata

Cita:
Iniciado por jam1138
"las fechas Y las fechas"?? ¿no te estás contradiciendo? ... lo que sí es un hecho es que no son "filas" sino "campos" ó "columnas"
OK, fue un simple error de revision... "La fecha estan almacenadas en una "COLUMNA" llamada "fnac" en un campo DATE. en una tabla llamada "CLIENTES"
  #12 (permalink)  
Antiguo 08/08/2005, 16:14
 
Fecha de Ingreso: noviembre-2002
Ubicación: Mex
Mensajes: 140
Antigüedad: 11 años, 7 meses
Puntos: 0
Cita:
Iniciado por jmn2k1
En esos casos, ese tipo de solucion no es la mas eficiente, es la mas rapida.
Es lo de menos pues ese tipo de soluciones son las más eficientes para ese tipo de problemas.
__________________
escribiendo mi libro de AJAX
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:35.
SEO by vBSEO 3.3.2