La Web del Programador: Comunidad de Programadores
 
    Pregunta:  55200 - DATEDIFF -PHP- SQL SERVER2000
Autor:  Maikel Garcia
Necesito ayuda, estoy tratando de realizar calculos con fechas por medio de php, las fechas las tengo en una tabla de Sql Server y desde php envio la siguiente consulta al sql server con la funcion mssql_query.

SELECT DATEDIFF(day, Fecha_Escalado, GETDATE()) As dias FROM Historial_Falla

al momento de mostrar los resultados de esta consulta en php no me muestra nada sale todo en blanco.

pero la consulta se esta realizando no da error y con foreach se puede hacer el rrecorrido de todos los campos que tiene la tabla Historial_Falla

Agradezco si me pueden ayudar gracias

  Respuesta:  Christian Oswaldo Cuadras Montoya
Que tal Maikel:

Le falto a tu pregunta especificar el formato de las fechas que quieres restar, yo realize un codigo para calcular la diferencia entre dos fechas con el formato aaaa-mm-dd hh:mm:ss (formato DATETIME), solo no utilize los segundos, el resultado que me devuelve es la cantidad de minutos que hay entre una fecha y otra.

$a="2009";
$m="01";
$d="5";
$hora="06";
$min="25";
fecha_fin= 2009-01-05 06:25

$a1="2009";
$m1="01";
$d1="5";
$hora1="06";
$min1="30";
fecha_fin= 2009-01-05 06:30

El resultado seria 5 minutos.

------EL CODIGO ES EL SIGUIENTE-----

echo '






';
echo 'inicio:'.$a.'-'.$m.'-'.$d.' '.$hora.':'.$min;
echo '

';
echo 'Fin:'.$a1.'-'.$m1.'-'.$d1.' '.$hora1.':'.$min1;

echo '



';
$total=$min1-$min;
echo $total;
$total_minutos=0;
$bandera=0;

while ($bandera==0)
{
if($min==$min1 and $hora==$hora1 and $m==$m1 and $d==$d1 and $a==$a1)
$bandera=1;
else
{
$min=$min+1;
$total_minutos=$total_minutos+1;
if($min==60)
{
$min=0;
$hora=$hora+1;
if($hora==24)
{
$hora=0;
$d=$d+1;
if($m==1)
{
if($d==32)
{
$d=1;
$m=$m+1;
}
}
if($m==2)
{
if($d==29)
{
$d=1;
$m=$m+1;
}
}
if($m==3)
{
if($d==32)
{
$d=1;
$m=$m+1;
}
}
if($m==4)
{
if($d==31)
{
$d=1;
$m=$m+1;
}
}
if($m==5)
{
if($d==32)
{
$d=1;
$m=$m+1;
}
}
if($m==6)
{
if($d==31)
{
$d=1;
$m=$m+1;
}
}
if($m==7)
{
if($d==32)
{
$d=1;
$m=$m+1;
}
}
if($m==8)
{
if($d==32)
{
$d=1;
$m=$m+1;
}
}
if($m==9)
{
if($d==31)
{
$d=1;
$m=$m+1;
}
}
if($m==10)
{
if($d==32)
{
$d=1;
$m=$m+1;
}
}
if($m==11)
{
if($d==31)
{
$d=1;
$m=$m+1;
}
}
if($m==12)
{
if($d==32)
{
$d=1;
$m=$m+1;
}
}
if($m==13)
{
$m=1;
$a=$a+1;
}

}
}
}
}

echo '



';
echo "La diferencia en minutos entre las dos fechas es de--";
echo $total_minutos;
?>


Si esperas otro resultado simplemente haz tus propios calculos, espero que esto te sirva.

Saludos.

  Respuesta:  Luis
Prueba con esta función (personalizala tú mismo):

function diferencia_fechas($fecha1, $fecha2, $intervalo)
{
// ** Establece la fecha 1
$fecha_1 = mktime(date("H", strtotime($fecha1)),
date("i", strtotime($fecha1)),
date("s", strtotime($fecha1)),
date("m", strtotime($fecha1)),
date("d", strtotime($fecha1)),
date("Y", strtotime($fecha1)));

// ** Establece la fecha 2
$fecha_2 = mktime(date("H", strtotime($fecha2)),
date("i", strtotime($fecha2)),
date("s", strtotime($fecha2)),
date("m", strtotime($fecha2)),
date("d", strtotime($fecha2)),
date("Y", strtotime($fecha2)));

// ** Resta las fechas
$dif_fechas = $fecha_1 - $fecha_2;

// ** Dependiendo del intervalo de entrada carga el valor de la diferencia
if ($intervalo == "horas") $dif_fechas = sprintf('%d', $dif_fechas / 3600);
if ($intervalo == "minutos") $dif_fechas = sprintf('%d', $dif_fechas / 60);
if ($intervalo == "segundos") $dif_fechas = sprintf('%d', $dif_fechas);

// ** Devuelve la diferencia de fechas en el intervalo
return $dif_fechas;
}