Ver Mensaje Individual
  #2 (permalink)  
Antiguo 17/09/2008, 19:22
Avatar de ElJavista
ElJavista
Colaborador
 
Fecha de Ingreso: marzo-2007
Ubicación: Lima Perú
Mensajes: 2.231
Antigüedad: 17 años, 2 meses
Puntos: 67
Respuesta: Sumar/restar fechas mysql/php

Lo que sucede es que PHP no tiene funciones que faciliten esa labor, podrías crearlas tú mismo. Bien, no te voy a dar el código ya hecho, sino te voy a decir como tienes que hacerlo. En primer lugar debes conocer el concepto de timestamp o marca de tiempo. Este timestamp es el número de milisegundos transcurridos desde el 1ro de Enero de 1970 hasta la fecha, hasta qué fecha? hasta cualquier fecha. A cada fecha se le puede calcular su timestamp. Bien. Y eso para qué sirve? como se come?

Pues en base a este concepto se deben hacer todas las operaciones de calculos. A ver, por ejemplo:

Si quieres sumar a una fecha 120 minutos. Eso es fácil. Primero debes obtener el timestamp de la fecha en cuestion.

$tmt = mktime($hora, $minuto, $segundo, $mes, $dia, $anio)

No me equivoqué, primero va el mes. Ok, Obviamente la función mktime nos da el timestamp de la fecha en cuestión. Correcto! ahora como hago para sumarle los 120 minutos? Pues fácil, lo sumas nomás, pero tienes que pasarlo a milisegundos ... ajá! ya me acordé de 2ro de primaria que un minuto equivale a 60 segundos, entonces al número de minutos debo multiplicarlo por 60 para que me dé el número de segundos y a eso debo multiplicarlo por 1000 para que me dé el número de milisegundos. Fácil, no?

Entonces tendría esto:

$tmt += 120 * 60 * 1000; // Eso me daría el timestamp de la fecha sumada 120 minutos.

Y ahora para pasarlo a fecha para hacer la comparación? Fácil, solo pásalo.

$fecha = date("Y-m-d H:i:s", $tmt);

Eso te dará la fecha en formato: aaaa-mm-dd H:m:s que es el usuado en MySQL. Bien, ahora qué te falta? pues que apliques lo poco que te enseñé en tu problema. Que dicho de paso no se entiende puntualmente, pero si que es relacionado a comparación entre fechas... Ah, por si acaso ... cómo harías para comparar el tiempo trancurrido entre dos fechas?? Fácil, obtienes el timestamp de cada fecha, lo restas. Y luego obtienes mediante date el número de unidades trancurridas. Si quieres días, usarías esto:

$dias = date("d", $diff)

Para que esto sea entendible revisa las funciones de fecha de PHP. Eso te aclarará el panorama, yo sólo te he hecho ver la manera como se trabaja con diferencias y sumas de fechas.