Foros del Web » Programando para Internet » PHP »

restar tiempo a consulta a mysql

Estas en el tema de restar tiempo a consulta a mysql en el foro de PHP en Foros del Web. Hola amigos miren tengo un problema con respecto a una consulta a mysql, en las cuales necesito saber el tiempo que hubo entre el resultado ...
  #1 (permalink)  
Antiguo 23/06/2009, 08:41
 
Fecha de Ingreso: enero-2009
Mensajes: 142
Antigüedad: 15 años, 2 meses
Puntos: 0
Pregunta restar tiempo a consulta a mysql

Hola amigos miren tengo un problema con respecto a una consulta a mysql, en las cuales necesito saber el tiempo que hubo entre el resultado de una fila y la otra aqui tengo mi consulta a mysql....

Código PHP:
$fechadehoydate("d/m/Y"); 
$sql="select idcontrol,recibida,montada from control where fecha='$fechadehoy'";
$sql_result=mysql_query($sql,$link);

while(
$row=mysql_fetch_array($sql_result)){
$idcontrol=$row['idcontrol'];
$recibida=$row['recibida'];
$montada=$row['montada'];
echo
"<table width='90' border='1' align='center'>
  <tr>
       <td width='40' bgcolor='#cccccc' class='letra'><a href='editar4.php?idcontrol="
.$idcontrol."'>$pag</a></td>
   href='editar4.php?idcontrol="
.$idcontrol."'>$recibida</a></td>
    <td width='50' bgcolor='#cccccc' class='letra'><a href='editar4.php?idcontrol="
.$idcontrol."'>$montada</a></td>
</tr>
</table>
"

MI PREGUNTA ES ¿COMO PUEDO SABER CUAL ES LA DIFERENCIA ENTRE RECIBIDA Y MONTADA (-)?
  #2 (permalink)  
Antiguo 23/06/2009, 09:06
Avatar de ACX_POISON  
Fecha de Ingreso: abril-2008
Ubicación: Talca-Chile
Mensajes: 750
Antigüedad: 16 años
Puntos: 7
Respuesta: restar tiempo a consulta a mysql

¿Necesitas saber a caso la diferencia entre dos fechas?
__________________
Me junto con los que Saben, Queriendo Saber.
  #3 (permalink)  
Antiguo 23/06/2009, 09:07
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: restar tiempo a consulta a mysql

¿Tus campos montada y recibida son tipo DATE?
  #4 (permalink)  
Antiguo 23/06/2009, 09:14
 
Fecha de Ingreso: enero-2009
Mensajes: 142
Antigüedad: 15 años, 2 meses
Puntos: 0
Pregunta Respuesta: restar tiempo a consulta a mysql

las tengo como time, necesito saber el tiempo empleado entre uno y otro...
  #5 (permalink)  
Antiguo 23/06/2009, 09:24
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: restar tiempo a consulta a mysql

Entonces puedes sacar el UNIX Timestamp entre una fecha y la otra. Un UNIX Timestamp no es mas que la cantidad de segundos desde el 1ero de Enero de 1970 hasta X fecha.

Código php:
Ver original
  1. $recibida=$row['recibida'];
  2. $montada=$row['montada'];
  3.  
  4. $recibida2 = strtotime($recibida);
  5. $montada2 = strtotime($montada);
  6.  
  7. $diferencia = abs($montada2 - $recibida2);

Ahora $diferencia contiene la diferencia entre las dos fechas en segundos.
  #6 (permalink)  
Antiguo 23/06/2009, 09:28
 
Fecha de Ingreso: enero-2009
Mensajes: 142
Antigüedad: 15 años, 2 meses
Puntos: 0
Pregunta Respuesta: restar tiempo a consulta a mysql

no tendre problemas las horas despues de las 23:59 ejemplo:

recibida: 23:30:50
montada: 00:40:25

o tendria que cambiar las filas a datetime?

SOY NOVATO
  #7 (permalink)  
Antiguo 23/06/2009, 09:36
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: restar tiempo a consulta a mysql

En ese caso si, tendrías que cambiar los campos a DATETIME.
  #8 (permalink)  
Antiguo 23/06/2009, 09:40
 
Fecha de Ingreso: enero-2009
Mensajes: 142
Antigüedad: 15 años, 2 meses
Puntos: 0
Pregunta

aah gracias y por ultimo, para hacer una consulta a las filas que tienen datetime como hago para que solo me muestre solo la hora y no la fecha. como tu sabes cuando hago la consulta me lo va a mostrar asi:

(23-06-2009 11:08:25)

Hola estuve probando lo que me enviastes para restar si funciona muy bien pero me lo muestra con numeros enteros y no me lo muestra como hora el resultado. ejemplo:

$horallegada2= strtotime ($horallegada);
$recibida3= strtotime ($recibida);
$dif1= abs ($horallegada2-$recibida3);

horallegada: 10:57:00
recibida: 11:46:40
----------------------------
dif1= 2980


AYUDA POR FAVOR....!!!

Última edición por GatorV; 30/06/2009 a las 09:09
  #9 (permalink)  
Antiguo 26/06/2009, 10:46
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 7 meses
Puntos: 41
Respuesta: restar tiempo a consulta a mysql

Cita:
Iniciado por juansiruiz Ver Mensaje
Hola estuve probando lo que me enviastes para restar si funciona muy bien pero me lo muestra con numeros enteros y no me lo muestra como hora el resultado. ejemplo:

$horallegada2= strtotime ($horallegada);
$recibida3= strtotime ($recibida);
$dif1= abs ($horallegada2-$recibida3);

horallegada: 10:57:00
recibida: 11:46:40
----------------------------
dif1= 2980


AYUDA POR FAVOR....!!!
Está todo bien, ésa es la diferencia, pero expresada en segundos.

Saludos,
  #10 (permalink)  
Antiguo 26/06/2009, 10:51
 
Fecha de Ingreso: enero-2009
Mensajes: 142
Antigüedad: 15 años, 2 meses
Puntos: 0
esta bien pero como hago para que lo muestre en forma ordenada. es decir

2980 =49:59

Alguien no tiene respuesta a este post solo necesito la funcion para pasar de total de segundo a H:m:s....

desde ya gracias

Amigos despues de una incansable busqueda encontre la solucion al total de segundo y bueno aqui se los dejo para el que lo necesite algun dia:

Código PHP:

function segundos_tiempo($segundos){ 
$minutos=$segundos/60
$horas=floor($minutos/60); 
$minutos2=$minutos%60
$segundos_2=$segundos%60%60%60
if(
$minutos2<10)$minutos2='0'.$minutos2
if(
$segundos_2<10)$segundos_2='0'.$segundos_2

if(
$segundos<60){ /* segundos */ 
$resultadoround($segundos).' Segundos'
}elseif(
$segundos>60 && $segundos<3600){/* minutos */ 
$resultado$minutos2.':'.$segundos_2.' Minutos'
}else{
/* horas */ 
$resultado$horas.':'.$minutos2.':'.$segundos_2.' Horas'

return 
$resultado

$segundos=9750

echo  
segundos_tiempo($segundos); 
SALUDOS A TODOS...

Última edición por GatorV; 30/06/2009 a las 09:10
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 05:01.