Ver Mensaje Individual
  #4 (permalink)  
Antiguo 05/08/2012, 08:21
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: como hacer una consulta asin...

Esto le sumaría 24 horas (un día) a los campos fecha1 y fecha2 a todos los registros que cumplan como condiciones simultáneas y obligatorias:
1) Que el campo fecha sea mayor que la fecha actual.
2) Que al menos uno de los campos fecha1 y fecha2 sea anterior a la fecha actual.

Código MySQL:
Ver original
  1. UPDATE tabla
  2.     fecha1 = ADDDATE(fecha, INTERVAL 1 DAY),
  3.     fecha2 = ADDDATE(fecha, INTERVAL 1 DAY),
  4.     DATE(fecha) > CURDATE()
  5.     AND
  6.     (DATE(fecha1)<CURDATE() OR DATE(fecha2) < CURDATE())

Este modelo no contempla las horas de cada fecha, sino sólo la fecha. La diferencia estriba en que cuando MySQL compara dos fechas dadas en formato DATETIME, las horas con sus minutos y segundos se consideran para el cálculo, y una diferencia de un segundo hace que una fecha sea menor que otra. Como no aclaraste cuánta precisión necesitas calcular, sólo tomé en consideración la fecha.

Tomar fecha y hora sólo implicaría eliminar las funciones DATE() y cambiar CURDATE() por NOW():

Código MySQL:
Ver original
  1. UPDATE tabla
  2.     fecha1 = ADDDATE(fecha, INTERVAL 1 DAY),
  3.     fecha2 = ADDDATE(fecha, INTERVAL 1 DAY),
  4.     fecha > NOW()
  5.     AND
  6.     (fecha1 < NOW() OR fecha2 < NOW())
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)