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

Fechas DATETIME cambio de status!

Estas en el tema de Fechas DATETIME cambio de status! en el foro de Mysql en Foros del Web. Hola amigos, he estado googleando como loco para encontrar algo similar a mi duda, pero la verdad no encuentro nada =( Diagnostico Basicamente tengo tres ...
  #1 (permalink)  
Antiguo 24/04/2009, 11:33
 
Fecha de Ingreso: abril-2009
Mensajes: 24
Antigüedad: 15 años
Puntos: 1
Fechas DATETIME cambio de status!

Hola amigos,

he estado googleando como loco para encontrar algo similar a mi duda, pero la verdad no encuentro nada =(

Diagnostico
Basicamente tengo tres columnas en mi base de datos.

[Fecha inicio] [Fecha Fin] [status]
-dateime- -datetime- -varchar-

donde hago los query desde php de la siguiente manera:

fecha inicio= NOW() // esto me guarda la fecha y hora actual
fecha fin = DATE_ADD(NOW(), INTERVAL ".$fechafin." MONTH) // esto suma una cantidad de meses determindao
status= 'A' // A= activo en el caso de P= pendiente

Esta estructura es de un pequeno sistema donde los usuario pueden publicar un anuncio gratis, donde se registran estas fechas y solo son visibles los anuncios con status "A"

Problema
El sistema funciona de maravilla, pero no comprendo como decirle a mysql que cuando la "fecha fin" sea igual a la "fecha actual" este me cambie el status a 'P' de manera de simular el vencimiento de la publicacion para que no sea visible.

agradeceria muchisimo su aporte =)
  #2 (permalink)  
Antiguo 24/04/2009, 11:39
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Fechas DATETIME cambio de status!

update nombretabla set status = "P" where fechafin=CURDATE()

Pero eso lo tendrás que hacer cada poco, y nunca lo tendrás actualizado del todo, salvo que actualices cada día a primera hora; pero eso no es recomendable. Deberías hacerlo en la consulta en la que muestras, diciendo que no muestre cuando la fechafin sea inferior o igual a la fecha del día de hoy. Añade a la consulta
and fechafin > CURDATE()
  #3 (permalink)  
Antiguo 24/04/2009, 11:53
 
Fecha de Ingreso: abril-2009
Mensajes: 24
Antigüedad: 15 años
Puntos: 1
Respuesta: Fechas DATETIME cambio de status!

ahh comprendo amigo jurena,

imagino que debo crear otro php dedicado a las actualizaciones de los status, algo asi como actualizarstatus.php este contendria el query

update nombretabla set status = "P" where fechafin=CURDATE()

la verdad es logico, pero creo que seria fechafin < CURDATE() ya que si la "fecha actual" es mayor a la "fechafin" este cambia es status. Asi si funcionara =)

MUCHISIMAS gracias. ahora voy a investigar de como decirle a mi actualizarstatus.php que se actualize cada minuto, ya que mis fechas contienen hora minutos y segundos. =)

si existe otra opcion mas eficiente sera bienvenida!
  #4 (permalink)  
Antiguo 24/04/2009, 12:59
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Fechas DATETIME cambio de status!

Creo que la que te propuse. Me explico: si el status P es para cuando la fechafin es igual o anterior (perdona el descuido) a la fecha de ahora (emplea NOW() en lugar de CURDATE() Y tendrás horas minutos y segundos), es un campo inútil, pues si añades lo que te dije, ahora con NOW(), tendrás resueltos todos los casos. Si P lo utilizas como criterio para no mostrar, también te valdrá y no necesitarás programar ni actualizar la base cada x tiempo, pues al entrar cotejará ese dato.
(LO QUE TENGAS)... AND fechafin < NOW()
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 20:42.