Foros del Web » Programando para Internet » PHP »

Cómo restar 2 fechas que se encuentran en campos de mi DB

Estas en el tema de Cómo restar 2 fechas que se encuentran en campos de mi DB en el foro de PHP en Foros del Web. Aplico el query con la consulta para extraer los dos campos que quiero restar cada uno comprende una fecha en el siguiente formato. dd/mm/aa Yo ...
  #1 (permalink)  
Antiguo 06/03/2006, 12:37
 
Fecha de Ingreso: noviembre-2005
Ubicación: venezulea
Mensajes: 214
Antigüedad: 12 años
Puntos: 0
Cómo restar 2 fechas que se encuentran en campos de mi DB

Aplico el query con la consulta para extraer los dos campos que quiero restar cada uno comprende una fecha en el siguiente formato. dd/mm/aa

Yo necesito saber cuantos días de diferencias existen entre ambas fechas.

Agradecería su ayuda
  #2 (permalink)  
Antiguo 06/03/2006, 13:07
 
Fecha de Ingreso: febrero-2006
Mensajes: 5
Antigüedad: 11 años, 9 meses
Puntos: 0
Pues yo te sugierio que utilices la funcion

DATEDIFF()

Esta puede comparar fechas
  #3 (permalink)  
Antiguo 06/03/2006, 13:17
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
Iniciado por wizard_lord
Pues yo te sugierio que utilices la funcion

DATEDIFF()

Esta puede comparar fechas
(observación) Del SQL de Msyql ..

Tienes más alternativas vía SQL (por si tu versión de Mysql no soporta dicha función).

Eso sí tus campos de fecha deben ser tipo DATE o DATETIME (no un "varchar" con ese dato en tu formato .. )

Un saludo,
  #4 (permalink)  
Antiguo 06/03/2006, 13:53
 
Fecha de Ingreso: noviembre-2005
Ubicación: venezulea
Mensajes: 214
Antigüedad: 12 años
Puntos: 0
yo aplico la consulta, de la consulta resultan dos campos que son fechas. No existe una función en php que me reste estos campos (dandome como resultados los dias de diferencia que comprende dichas fechas).
  #5 (permalink)  
Antiguo 06/03/2006, 14:09
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
Iniciado por ostayde
yo aplico la consulta, de la consulta resultan dos campos que son fechas. No existe una función en php que me reste estos campos (dandome como resultados los dias de diferencia que comprende dichas fechas).
No hay función en PHP directa .. entre otras cosas por qué PHP no sabe en que formato le proporcionas las fechas!!.

Lo que si que puedes hacer es pasar de una fecha en tal formato a un timestamp y de ahí hacer la resta (obtendrás segundos) para que luego multipliques por 60 y tendrás minutos .. por 60 y horas .. y por 24 y tendras días ...

Para eso usarías strtotime() de PHP ..

Lo más -sano- es que uses las funciones de SQL!!!!!! de Mysql que ya dispone este de ese tipo de funciones .. así de simple y mucho más óptimo.

Un saludo,
  #6 (permalink)  
Antiguo 06/03/2006, 14:16
 
Fecha de Ingreso: noviembre-2005
Ubicación: venezulea
Mensajes: 214
Antigüedad: 12 años
Puntos: 0
ok (me parece muy lógico). pero podrias darme un ejemplo de esas funciones que mencionas, por favor!
  #7 (permalink)  
Antiguo 06/03/2006, 14:21
 
Fecha de Ingreso: julio-2005
Mensajes: 90
Antigüedad: 12 años, 5 meses
Puntos: 0
Hola, la funcion strtotime debería servirte. Te permite pasar la fecha a un formato de 'segundos', una vez en ese formato, puedes sumar y restar lo que quieras, y luego puedes recuperar a partir de estos 'segundos' la fecha en el formato que prefieras.

Para mi fue un gran descubrimiento ;). Un Saludo.
  #8 (permalink)  
Antiguo 06/03/2006, 14:32
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Pues sería algo tipo:

Código PHP:
<? 
// conectas a tu BBDD .. etc ...

$sqlfecha="SELECT DATEDIFF(fecha1,fecha2) AS diferencia";  
$resultado mysql_query($sqlfecha); 
$diferencia=mysql_result($resultado,0,"diferencia"); 
echo 
$diferencia
?>
Y si no puedes usar DATEDIFF() (por versión de Mysql pues está disponible para Mysql 4.1.x? en adelante):

SELECT (TO_DAYS(fecha2) - TO_DAYS(fecha1)) as diferencia


Más comentarios al respecto:

http://www.forosdelweb.com/f18/como-calcular-tiempo-transcurrido-373546/

Ahí tienes también ejemplos de uso se strtotime() completos.

Un saludo,
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 07:45.