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. HOla a todos: MI consulta es la siguiente: Tengo una fecha del tipo date("Y/m/d G:i:s") que inserto en una campo de la mi base de ...
  #1 (permalink)  
Antiguo 07/12/2005, 03:24
 
Fecha de Ingreso: junio-2003
Mensajes: 778
Antigüedad: 20 años, 10 meses
Puntos: 1
Restar fechas

HOla a todos:

MI consulta es la siguiente:

Tengo una fecha del tipo date("Y/m/d G:i:s") que inserto en una campo de la mi base de datos para saber cuando ha sido enviado un email por última vez a un cliente.

Lo que quiero hacer es, la proxima vez que haga selección de emails para enviar un boletin, saber que hayan pasado mas de 10 horas del último envio que he hecho a ese cliente.

supongo que tenga que recoger de la BBDD la fecha del último envio que realice y restarle la fecha actual... pero no se como hacerlo, y menos para saber el resultado e horas...

Podeís ayudarme??

Gracias a todos.
  #2 (permalink)  
Antiguo 07/12/2005, 04:43
 
Fecha de Ingreso: febrero-2005
Mensajes: 396
Antigüedad: 19 años, 2 meses
Puntos: 1
lo que tienes que hacer es no guardar las fechas en la base de datos como una cadena (tal como haces), sino como un timestamp, que es un numero entero que generalmente se corresponde con el numero de segundos que han pasado desde una fecha determinada. Si guardas el timestamp, hacer las restas es trivial (son numeros enteros), pero con cadenas... pues como que no se puede facilmente.

Dependiendo de que base de datos estes utilizando puede que ésta te permia realizar operaciones con fecha sen forma de cadenas, pero eso ya no es problema directo de php.

Por cierto que en php hay funciones que permiten cambiar de formato cadena a timestamp y viceversa. Mirate la documentacion de las funciones date y time y por alli encontrarás soluciones.

Un saludo

Zerjillo
  #3 (permalink)  
Antiguo 07/12/2005, 05:19
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
Cita:
Iniciado por Zerjillo
en php hay funciones que permiten cambiar de formato cadena a timestamp
strtotime(), y sí, funcionaría . Pero si los datos van a manejar en una Base de Datos es mejor valerse de puro SQL... desde el hecho de insertar la fecha; no usar date() de PHP sino NOW() de SQL.

... si no mal entiendo, el problema se suoluciona extrayendo solo los datos cuya diferencia de fechas (la actual y la guardada) sea mayor de 10 horas. Podría servirte una query como:
Código:
 SELECT * FROM tabla WHERE campo_date < DATE_SUB(NOW(), INTERVAL 10 HOUR)
Ve que desde el planteamiento es mejor, ahora solo consultas registros que cumplan esa diferencia, si lo hicieses con PHP tendrías que consultar todos los registros y comprobar uno por uno la diferencia.
http://dev.mysql.com/doc/refman/5.0/...functions.html
Te recomiendo veas los tutoriales de www.mysql-hispano.org

... claro, para que esto funcione debes trabajar con campos adecuados. Lo que planteo es útil con un campo DATETIME.

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

"100 años después, la revolución no es con armas, es intelectual y digital"
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 06:55.