border

Miembros:
Mensajes:
Temas:
Online:

Ultimo Miembro:

 
 

  #1 (permalink)  
Antiguo 14-07-2006, 18:49:42
Avatar de geq
geq geq is offline
Gran Participación en el Foro
 
Registrado: nov 2004
Posts: 148
geq Valoración +2
Contactar con geq a través de MSN
Predeterminado Diferencia de fechas

Hola. Tengo en una base de datos muchos registros (no importa de que..) que tienen fecha en un campo tipo datetime. Lo que quiero es hacer un script que se ejecute automáticamente cada cierto tiempo (con cronjobs) y que borre de esa tabla los registros que tienen mas de 12 horas.

Para ello, pido la lista y por cada un compruebo la fecha. Y ahí surge el problema:

La fecha tiene formato Y-m-d H:i:s .. pero ¿¿cómo se cuantas HORAS hay entre esa fecha y la fecha actual del servidor??

Espero q alguien pueda ayudarme ^^

Muchas gracias

Saludos..Exitos

Gabriel
__________________
g a b o..

www.cqsoft.com.ar
Responder Con Cita
  #2 (permalink)  
Antiguo 15-07-2006, 04:25:31
Avatar de jrios03
Moderador
 
Registrado: ene 2005
Ubicación: Curico
Posts: 792
jrios03 Valoración +2
Contactar con jrios03 a través de MSN
Predeterminado

Podrías intentar restar las fechas, o sea, en una variable $actual guardas la fecha del Servidor, y en otra $nn guardas la que tiene la base de datos, y después sólo las restas...

Mi, para serte bien franco, no me acuerdo si funciona así, ya tengo mucho sueño, así que mañana te daré una respuesta más contundente...

Saludos... :smt004
__________________
Atentamente, Juan Ríos Pizarro...
Saludos desde Chile...

PD: Perdí mi mascota... buaaaaaaaa.... al menos encontré una nueva
Responder Con Cita
  #3 (permalink)  
Antiguo 15-07-2006, 08:55:52
Avatar de J.M.Movilla
Administrator
 
Registrado: dic 2002
Ubicación: BURGOS - ESPAÑA
Posts: 5.404
J.M.Movilla Valoración +2
Predeterminado

Código:
Dim FechaTope As Date
FechaTope = DateAdd("h", -12,  Now)
Conex.Execute "DELETE From MiTabla Where Fecha < #" & FechaTope & "#"
__________________
José María Movilla Cuadrado
______________________

Visual Basic Videos Programacion Foro Programacion
Tutoriales Programacion Trucos Programacion Codigos Programacion
Responder Con Cita
  #4 (permalink)  
Antiguo 17-07-2006, 00:41:31
Avatar de geq
geq geq is offline
Gran Participación en el Foro
 
Registrado: nov 2004
Posts: 148
geq Valoración +2
Contactar con geq a través de MSN
Predeterminado

gracias a ambos..

jrios03, funciona.. solo habria que convertir la fecha q c extrae del registro a fecha, con strtotime()..

J.M.Movilla, probé esto:

Código:
$hoy = Date("Y-m-d H:i:s");
$limite = strtotime("+12 hours",$hoy);
$result = mysql_query("DELETE FROM tabla WHERE activado='0' AND date > '$limite'");
pero no me funciona.. borra todos los registros que tengan activado='0' :S

como debería hacer la consulta?


Muchas gracias,

saludos.. exitos
__________________
g a b o..

www.cqsoft.com.ar
Responder Con Cita
  #5 (permalink)  
Antiguo 17-07-2006, 09:48:08
Avatar de J.M.Movilla
Administrator
 
Registrado: dic 2002
Ubicación: BURGOS - ESPAÑA
Posts: 5.404
J.M.Movilla Valoración +2
Predeterminado

Código:
$result = mysql_query("DELETE FROM tabla WHERE activado='0' AND date > '$limite'")
tiene dos palabras que inducen a la duda:

"tabla" debe ser el nombre de la tabla en que deban ser borrados los datos; aunque no es habitual que tú llames "tabla" a tu tabla..., está bastante claro que si te borra los datos es porque efectivamente se llama así...

"date" debe ser el nombre del campo de fecha que ha de tener en cuenta para borrar los datos anteriores a la fecha y hora límite. En este caso no cabe admitir que tú lo llames precisamente "date" a tal campo, puesto que date es una palabra reservada que va a ser interpretada como tal, y por ello no guardará relación con el campo de la base de datos, aunque éste lleve ese nombre. Habrás de cambiar el nombre de ese campo si es que le has dado el nombre "date".

Y finalmente, no tienes que utilizar el signo '>' sino justamente lo contrario: '<'.

Con estas rectificaciones esperemos que funcione adecuadamente.
__________________
José María Movilla Cuadrado
______________________

Visual Basic Videos Programacion Foro Programacion
Tutoriales Programacion Trucos Programacion Codigos Programacion
Responder Con Cita
  #6 (permalink)  
Antiguo 18-07-2006, 04:58:07
Avatar de geq
geq geq is offline
Gran Participación en el Foro
 
Registrado: nov 2004
Posts: 148
geq Valoración +2
Contactar con geq a través de MSN
Predeterminado

Biem muchas gracias

eso si.. "tabla" seria el nombre de la tabla.. como tiene un nombre medio raro puse "tabla" aqui para no confundir.. y "date" el nombre del campo de la fecha..

como me dijiste, cambie el nombre de "date" por "fecha".. y cambie el signo ">" por "<".. pero ahora no elimina nada..

por seguridad inclui luego de la consulta

Código:
echo mysql_error();
pero no devuelve ningun error.. asi que no se que pueda ser :S

saludos cordiales

exitos..muchas gracias
__________________
g a b o..

www.cqsoft.com.ar
Responder Con Cita
  #7 (permalink)  
Antiguo 18-07-2006, 08:45:04
Avatar de J.M.Movilla
Administrator
 
Registrado: dic 2002
Ubicación: BURGOS - ESPAÑA
Posts: 5.404
J.M.Movilla Valoración +2
Predeterminado

Pues lamento decirte que tu problema ya se escapa de mis capacidades... Te deseo suerte con alguien que te pueda dar el empujoncito más efectivo.
__________________
José María Movilla Cuadrado
______________________

Visual Basic Videos Programacion Foro Programacion
Tutoriales Programacion Trucos Programacion Codigos Programacion
Responder Con Cita
  #8 (permalink)  
Antiguo 18-07-2006, 14:18:58
Avatar de jrios03
Moderador
 
Registrado: ene 2005
Ubicación: Curico
Posts: 792
jrios03 Valoración +2
Contactar con jrios03 a través de MSN
Predeterminado

Envíame tu código y veré como ayudarte...

Postéalo aquí mismo.... ojalá con la base de datos....

O si no quieres exponer tu código, muestranos tu trozo de código donde haces la consulta y eliminas...

Saludos... :smt004
__________________
Atentamente, Juan Ríos Pizarro...
Saludos desde Chile...

PD: Perdí mi mascota... buaaaaaaaa.... al menos encontré una nueva
Responder Con Cita
  #9 (permalink)  
Antiguo 18-07-2006, 17:10:32
Avatar de geq
geq geq is offline
Gran Participación en el Foro
 
Registrado: nov 2004
Posts: 148
geq Valoración +2
Contactar con geq a través de MSN
Predeterminado

Bien, muchas gracias!!

El código del script donde quiero usar esto es sólo esto:

Código:
<?PHP
	include("cfg.php");
	$hoy = Date("Y-m-d H:i:s");
	$limite = strtotime("+12 hours",$hoy);
	$result = mysql_query("DELETE FROM afiliados_users WHERE activado='0' AND fecha<'$limite'");
	echo mysql_error();
?>
en cfg.php está la conexion a la base de datos junto con otras funciones. Esto funciona correctamente ya que lo utilizo en muchos otros scripts del programa.

Esta es la tabla afiliados_users:

Código:
CREATE TABLE IF NOT EXISTS `afiliados_users` (
  `activacion` varchar(21) NOT NULL default '',
  `activado` int(1) NOT NULL default '0',
  `user_id` varchar(255) NOT NULL default '',
  `nombre` varchar(255) NOT NULL default '',
  `doc` varchar(15) NOT NULL default '',
  `doctipo` varchar(10) NOT NULL default '',
  `addr` varchar(255) NOT NULL default '',
  `cp` varchar(8) NOT NULL default '',
  `email` varchar(255) NOT NULL default '',
  `tel` varchar(20) NOT NULL default '',
  `pais` varchar(255) NOT NULL default '',
  `ubicacion` varchar(255) NOT NULL default '',
  `user` varchar(15) NOT NULL default '',
  `pass` varchar(255) NOT NULL default '',
  `d` char(2) NOT NULL default '0',
  `m` char(2) NOT NULL default '0',
  `y` varchar(4) NOT NULL default '0',
  `tipoa` char(1) NOT NULL default '',
  `tipob` char(1) NOT NULL default '',
  `tipoc` char(1) NOT NULL default '',
  `tipod` char(1) NOT NULL default '',
  `terms` char(1) NOT NULL default '',
  `fecha` datetime NOT NULL default '0000-00-00 00:00:00'
) TYPE=MyISAM;
y lo que quiero hacer es que mi script (que se ejecutara con cronjobs) elimine todos los registros de esa tabla que tengan activado='0' y más de 12 horas.

eso es todo.

Saludos

Muchas gracias..exitos
__________________
g a b o..

www.cqsoft.com.ar
Responder Con Cita
  #10 (permalink)  
Antiguo 18-07-2006, 18:20:24
Moderador
 
Registrado: dic 2002
Ubicación: Madrid
Posts: 4.266
acalanto ha deshabilitado la reputación
Predeterminado

Prueba a poner la variable dentro de la caddena en este formato. Tengo la impresión de que le pasas '0' como valor para el condicionante.


'".$limite."'

Ojo: Son comillas doble + comillas simples + . + <elnombredelavariable> + . + comillas simples + comillas dobles



Código:
$result = mysql_query("DELETE FROM afiliados_users WHERE activado='0' AND fecha<"'.$limite.'"");
__________________
Un cordial saludo
-Acalanto-

Madrid - España

Visual Basic
Videos Programacion
Foro Programacion
Tutoriales Programacion
Responder Con Cita
Respuesta


Herramientas
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Trackbacks are habilitado
Pingbacks are habilitado
Refbacks are habilitado


Temas Similares
Tema Autor Foro Respuestas Último Mensaje
que diferencia hay??? trucutrucu Visual Basic.NET 2003 & 2005 0 16-10-2007 17:56:02
Diferencia entre fechas tonilopez sql 2000 2 04-07-2005 15:31:36
Diferencia entre DLL y OCX yamcha Visual Basic 6.00 1 09-05-2005 07:15:25
Diferencia de Horas Asathor Visual Basic 6.00 4 17-09-2004 01:00:00
CUAL ES LA DIFERENCIA?? kumulu_nimbus Visual Basic 6.00 2 17-09-2004 01:00:00


La franja horaria es GMT. Ahora son las 16:57:14.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO 3.1.0
A vBSkinworks Design

Alojado en el servicio Premium de Masquewebs | Diseño mejorado por MasqueWebs

right