Foros del Web » Programando para Internet » PHP »

Restar fechas...

Estas en el tema de Restar fechas... en el foro de PHP en Foros del Web. ¿Hay alguna forma para restar fechas sin tener q separar los campos de cada una en año, mes y día? Si quiero restar, por ejemplo, ...
  #1 (permalink)  
Antiguo 27/05/2005, 11:43
 
Fecha de Ingreso: mayo-2005
Mensajes: 510
Antigüedad: 12 años, 7 meses
Puntos: 1
Pregunta Restar fechas...

¿Hay alguna forma para restar fechas sin tener q separar los campos de cada una en año, mes y día?
Si quiero restar, por ejemplo, dos fecha q tengo en $fecha y $fechar, puedo hacerlo directamente?
  #2 (permalink)  
Antiguo 27/05/2005, 11:47
Avatar de sism82  
Fecha de Ingreso: octubre-2003
Ubicación: Guadalajara
Mensajes: 865
Antigüedad: 14 años, 1 mes
Puntos: 1
desde sql diferentes bases de datos proporcionan diferentes métodos.
esta es una referencia de mysql

http://dev.mysql.com/doc/mysql/en/da...functions.html

si tienes problemas para usarla, pregunta concretamente con que función tienes el problema y que es lo que no entiendes.

desde php igualmente tienes funciones como mktime() que con la ayuda de la función date() te permiten hacer operaciones frecuentes.

http://mx.php.net/mktime
http://mx.php.net/date

saludos y suerte
  #3 (permalink)  
Antiguo 27/05/2005, 12:22
 
Fecha de Ingreso: mayo-2005
Mensajes: 510
Antigüedad: 12 años, 7 meses
Puntos: 1
Bufff, la verdad es q no he entendido mucho...
He intentado hacer algo con DATEDIFF, pero no lo consigo:

$sqlf = mysql_query("SELECT FECHA FROM INCIDENCIA WHERE NUMERO LIKE '".$myrownum['NUMERO']."'", $servconex) or die(mysql_error());
$fecha = mysql_fetch_array($sqlf);

$sqlfr = mysql_query("SELECT FECHA_RESPUESTA FROM INCIDENCIA WHERE NUMERO LIKE '".$myrownum['NUMERO']."'", $servconex) or die(mysql_error());
$fechar = mysql_fetch_array($sqlfr);

$diferencia = mysql_query("SELECT DATEDIFF('".$fechar['FECHA_RESPUESTA']." 23:59:59', '".$fecha['FECHA']."')", $servconex) or die(mysql_error());

Al ejecutar este código me dice q tengo un error en la línea 1 'near' ('".$fechar['FECHA_RESPUESTA']." 23:59:59', '".$fecha['FECHA']."'). Vaya, q no me aclara nada. ¿Sabe alguien cómo puedo hacerlo?

El valor q quiero obtener es la diferencia entre fecha y fecha_respuesta, almacenados en las variables $fecha y $fechar
  #4 (permalink)  
Antiguo 27/05/2005, 14:06
Avatar de sism82  
Fecha de Ingreso: octubre-2003
Ubicación: Guadalajara
Mensajes: 865
Antigüedad: 14 años, 1 mes
Puntos: 1
intenta esto, y dinos como te fué, postea la salida completa del navegador...
Código PHP:
$sql "SELECT DATEDIFF('{$fechar['FECHA_RESPUESTA']} 23:59:59', '{$fecha['FECHA']}')";
echo 
"Voy a ejecutar la sentencia SQL: {$sql}";
$diferencia mysql_query($sql$servconex) or die(mysql_error()); 
  #5 (permalink)  
Antiguo 30/05/2005, 03:59
 
Fecha de Ingreso: mayo-2005
Mensajes: 510
Antigüedad: 12 años, 7 meses
Puntos: 1
Nada, tampoco. Me da error en la sentencia SQL ($sql). ¿Todas las versiones de MYSQL implementan el método DATEDIFF? Igual es eso por lo q no me lo reconoce...
No sé a q te refieres con eso de q postee la salida COMPLETA del navegador... :(
  #6 (permalink)  
Antiguo 30/05/2005, 04:06
 
Fecha de Ingreso: mayo-2005
Mensajes: 510
Antigüedad: 12 años, 7 meses
Puntos: 1
Ah! Los valores de las fechas los coge bien, $fechar['FECHA_RESPUESTA'] y $fecha['FECHA'] tienen los valores de las fechas de las q quiero obtener la diferencia, por eso pienso q el problema pueda ser q la versión q tengo de MYSQL no entienda el método DATADIFF...
  #7 (permalink)  
Antiguo 30/05/2005, 04:23
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
Por favor cuando te dé errores menciona EXACTAMENTE cuales son y muestra las líneas de tu código implicadas (el error dirá: on line X ).

... agrego que para usar estas funciones debes usar campos tipo DATE ó DATETIME que manejan un formato YYYY-MM-DD (parace no lo han mencionado)... y que la función DATEDIFF hayará la diferencia en días...

Igual busca en los comentarios de las funciones que te dejó sism82 (y agrego www.php.net/strtotime ) que vienen buenos scripts... quizá con solo copiar y pegar

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

"100 años después, la revolución no es con armas, es intelectual y digital"
  #8 (permalink)  
Antiguo 30/05/2005, 05:08
 
Fecha de Ingreso: mayo-2005
Mensajes: 510
Antigüedad: 12 años, 7 meses
Puntos: 1
DATEDIFF() fue añadido para MYSQL 4.1.1, y la versión con la q trabajo es anterior, por tanto no me va a reconocer el comando. ¿Alguien sabe algo con lo q pueda conseguir el mismo resultado, sin usar DATADIFF()?
  #9 (permalink)  
Antiguo 31/05/2005, 04:26
 
Fecha de Ingreso: mayo-2005
Mensajes: 7
Antigüedad: 12 años, 6 meses
Puntos: 0
Hola, yo para restar fechas hago lo siguiente:
Convierto las fechas en formato UNIX
$fecha1= strtotime ($fecha1);
$fecha2 = strtotime ($fecha2);
Y después las resto, dando el resultado en segundos.
$resultado = ($fecha1 - $fecha2);
Después hay que convertir esos segundos al formato que desees.
Espero haber sido de ayuda.
Un saludo.
  #10 (permalink)  
Antiguo 31/05/2005, 04:35
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
... Igual podrías hacerlo con mktime() y para convertir esos segundos puedes hacer uso de la función date()... ó hacer las diviciones directamente .

Para las tres funciones (mktime(), strtotime() y date()) se te dejaron enlaces directos...

Suerte!
__________________
٩(͡๏̯͡๏)۶
» 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 31/05/2005, 15:26
 
Fecha de Ingreso: mayo-2005
Mensajes: 510
Antigüedad: 12 años, 7 meses
Puntos: 1
Muchas gracias a los 2, no conocía éstos métodos... Ya me ha salido lo q quería :D
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 16:41.