Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Modificar un registro ingresado hace 24 horas

Estas en el tema de Modificar un registro ingresado hace 24 horas en el foro de Mysql en Foros del Web. Buenas, estoy teniendo un problemilla al querer modificar un campo de los registros de mi tabla. Lo que tengo es una tabla de pedidos, los ...
  #1 (permalink)  
Antiguo 05/04/2007, 02:24
 
Fecha de Ingreso: septiembre-2006
Ubicación: Montevideo
Mensajes: 46
Antigüedad: 13 años, 2 meses
Puntos: 1
Mensaje Modificar un registro ingresado hace 24 horas

Buenas,

estoy teniendo un problemilla al querer modificar un campo de los registros de mi tabla. Lo que tengo es una tabla de pedidos, los pedidos tienen un campo 'estado' que acepta los valores nuevo, pendiente, enviado y terminado.

He creado un script cuyo propósito es cambiar el estado de los pedidos nuevos que tengan una antiguedad de 24 horas de nuevo a pendiente.

Mi problema esta en que en la tabla pedido hay un campo de tipo DATETIME llamado 'fechaPeticion' que tiene la fecha en que fueron hechos dichos pedidos. Tengo que generar una sentencia que modifique solo aquellos registros cuya fechaPeticion sea anterior a 24 horas desde este momento. Estoy trabajando con PHP, si es que sirve para que alguno me de una solucion. La sentencia que me serviría seria algo como:

UPDATE pedido
SET estado = 'pendiente'
WHERE estado = 'nuevo'
AND ((" . date("Y/m/d G:i:s") . " - fechaPeticion) >= 86400)

86400 es la cantidad de segundos que hay en 1 dia. El problema es q la funcion date de PHP devuelve la fecha de hoy pero en un tipo string y fechaPeticion es DATETIME. Alguna idea de como solucionar este problema??
  #2 (permalink)  
Antiguo 05/04/2007, 09:50
 
Fecha de Ingreso: mayo-2003
Ubicación: Buenos Aires
Mensajes: 97
Antigüedad: 16 años, 6 meses
Puntos: 0
Re: Modificar un registro ingresado hace 24 horas

Chelix investigate la funcion timediff de mysql que con esa podes comparar fechas y te devuelve el resultado convertido a horas.
  #3 (permalink)  
Antiguo 05/04/2007, 15:59
 
Fecha de Ingreso: septiembre-2006
Ubicación: Montevideo
Mensajes: 46
Antigüedad: 13 años, 2 meses
Puntos: 1
Re: Modificar un registro ingresado hace 24 horas

Gracias Antigol ;)

con esa función resulto sencillo resolverlo, al final la sentencia me quedo asi:

UPDATE pedido
SET estado = 'pendiente'
WHERE estado = 'nuevo'
AND (SELECT TIMEDIFF('" . date("Y/m/d G:i:s") . "', fechaPeticion) > '24:00:00')

Tuve que usar una subconsulta y vale la pena notar las comillas que encierran el '24:00:00'. Gracias de nuevo por el tip, era lo q necesitaba.
  #4 (permalink)  
Antiguo 05/04/2007, 17:03
 
Fecha de Ingreso: mayo-2003
Ubicación: Buenos Aires
Mensajes: 97
Antigüedad: 16 años, 6 meses
Puntos: 0
Re: Modificar un registro ingresado hace 24 horas

Chelix me parece inclusive que la complicaste mucho, ¿por que no hiciste algo tipo and timediff(now(),fechaPeticion) > '24:00:00' ?

O sea, para traer la fecha del dia te bastaba con la funcion now() de mysql y tampoco era necesario el "select" que pusiste en el and.
  #5 (permalink)  
Antiguo 05/04/2007, 17:38
 
Fecha de Ingreso: septiembre-2006
Ubicación: Montevideo
Mensajes: 46
Antigüedad: 13 años, 2 meses
Puntos: 1
Re: Modificar un registro ingresado hace 24 horas

el timediff me habia dado algun problema cuando lo queria poner como condicion del where, los ejs que encontre en internet solo lo usaban dentro de un select por eso lo hice por ahi, hice pruebas con lo que me decis y tuve suerte, funco al pelo, no se xq antes me tiraba problemas.

gracias de nuevo.
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 19:02.