Ver Mensaje Individual
  #2 (permalink)  
Antiguo 24/07/2012, 20:12
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: Comparación de Fechas con Between

A veces, para ver con claridad, lo que te conviene es escribir un pseudocódigo que te sirva de guía. Algo como (aplicando por lógica inversa):
Cita:
Para ser válido:
- Fecha de inicio y final no debe quedar comprendida dentro de otro registro.
- La fecha de inicio no debe quedar entre fecha de inicio y final de otro.
- La fecha final no debe quedar entre el inicio y final de otro.
- El período nuevo no debe superponerse al de otro período ya existente.
Si te fijas, la segunda y tercera condiciones ya incluyen a la primera, por lo que podemos descartar esa. Pero no podemos descartar la cuarta.
Entonces eso sería:
Código MySQL:
Ver original
  1. ...
  2. (fechainicionueva NOT BETWEEN fechainicio AND fechafinal)
  3. (fechafinalnueva NOT BETWEEN fechainicio AND fechafinal)
  4. (fechainicionueva <= fechainicio AND fechafinalnueva >= fechafinal)
Me parece que con eso es suficiente.

En ese contexto, si la consults devuelve al menos un registro, entonces los datos que se quieren insertar no son válidos.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)