Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Mysql (http://www.forosdelweb.com/f86/)
-   -   help! Store Procedures con DATEDIFF (http://www.forosdelweb.com/f86/help-store-procedures-con-datediff-583957/)

mmb000 07/05/2008 12:12

help! Store Procedures con DATEDIFF
 
Tengo un problema para crear un store procedure en Mysql 5.0

tengo una tabla llamada eventos con 5 tuplas, la fecha actual es 2008/05/07

---------|----------------|---------|
eid | event_date | active |
---------|----------------|---------|
1 |2008/05/01 | 1 |
---------|----------------|---------|
2 |2008/05/02 | 1 |
---------|----------------|---------|
3 |2008/05/03 | 1 |
---------|----------------|---------|
4 |2008/05/20 | 1 |
---------|----------------|---------|
5 |2008/05/21 | 1 |
---------|----------------|---------|

Lo que necesito es crear un store procedure que usando datediff, recorra TODOS los
valores de la tabla automaticamente y actualize la columna "active", con 0 para eventos pasados y mantenga el "1" si aun es un evento futuro.

Tengo el siguiente codigo que efectua la operacion pero enviando por parametro el id de la tupla:

DELIMITER $$

DROP PROCEDURE IF EXISTS event_update $$
CREATE PROCEDURE event_update (id int )
BEGIN

IF (id = 0) THEN
SET id = null;
END IF;

IF (id IS NOT NULL) AND ((SELECT DATEDIFF(curdate(),event_date) FROM eventos WHERE active='1' AND eid='id')<0)
THEN
UPDATE eventos SET active=0 WHERE eid='id';

END IF;
END $$

DELIMITER ;

Luego desde una hoja php, llamo el SP:
$myspcall = mysqli_query($dbc, "CALL event_update($id)");

esto me obliga ha primero efectuar una consulta, usar mysql_fetch_array() y pasar cada id por parametro.

Lo que necesito es hacer q la BD efectue el store procedure sin necesidad del parametro, es decir recorra toda la tabla y actualiza los valores comparando la fecha en la BD con la fecha actual.

Alguien puede ayudarme porfavor??

Berletzis 27/08/2008 17:51

Respuesta: help! Store Procedures con DATEDIFF
 
Hola, oye yo necesito lo mismo, si lo pudiste resolver?? me das algun tip??!! se te agredecera

HackmanC 27/08/2008 18:26

Respuesta: help! Store Procedures con DATEDIFF
 
Hola Berletzis,

No sé si mmb000 logró su objetivo, pero creo que pudo haber sido mucho más fácil.

update eventos set active = 0 where datediff(event_date, CURRENT_TIMESTAMP) < 0;

Actualizar todos los eventos (actualizar activo a 0) donde la diferencia en días del evento sea menor que 0 -- negativos -- (si fuera un evento futuro genera valores positivos).

Saludos,

Berletzis 27/08/2008 18:36

Respuesta: help! Store Procedures con DATEDIFF
 
Vientos muchas gracias, ahora tengo ke ver como meterlo en un SP, nunca he hecho uno :-(

oye si tienes tiempo que me recomiendas para que una ves que actualice los status.. mande un correo a la direccion en un campo de esa tabla. ???

sabes de algo de donde pueda estudiarle o bajar o X cosa ?? mil gracias


update eventos set active = 0 where datediff(event_date, CURRENT_TIMESTAMP) < 0;

HackmanC 27/08/2008 19:29

Respuesta: help! Store Procedures con DATEDIFF
 
Hola,
Revisa la siguiente documentacion :

Crear procedimientos almacenados...
http://dev.mysql.com/doc/refman/5.0/...procedure.html

Ejecutar una query desde PHP...
http://www.php.net/manual/es/function.mysql-query.php

Utilizar la sentencia CALL para ejecutar stored procs...
http://dev.mysql.com/doc/refman/5.0/es/call.html

Cita:

sabes de algo de donde pueda estudiarle o bajar o X cosa ?? mil gracias
¿ Para que enviarte 1 link si puedes tener 20.500.000 ?
http://www.google.com/search?q=php+enviar+email

Saludos.


La zona horaria es GMT -6. Ahora son las 08:13.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.