Ver Mensaje Individual
  #6 (permalink)  
Antiguo 24/07/2008, 17:56
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: MySQL standard VS MySQL community

Vamos desde atrás para adelante:
1. Las diferencias de performance y aplicación del Enterprise y del Community Server las debes ver en la página oficial del tema. Son demasiado extensas y específicas sobre determinadas funcionalidades del motor de MySQL para ponerlas en un post, además de no saber en realidad cuánto has profundizado tú en bases de datos como para poder darte una orientación correcta. No quiero extenderme en explicaciones que te puedan parecer obvias o en otras que requieren más conocimientos que los míos para darlas con precisión y que sean inteligibles.
2. Respecto del "bug" entre MySQL 5.0.45 y 4.0.22, el problema fue un bug de la 4.0.22 resuelto para la versión 5.0.45 que se puede describir de la siguiente forma:
- MySQL es un motor de base de datos contextual. En ese sentido realiza (al igual que Oracle en algunos casos) cierto número de conversiones implícitas según la operación y los operadores, como es el caso de los manejos de las fechas y las horas.
- Según el manual oficial de referencia de MySQL 4.0.22, el valor devuelto por NOW() es un datetime (de forma '0000-00-00 00:00:00'), pero considerando que estás comparándolo a un DATE, está haciendo una conversión implícita entre el datetime y el date, por lo cual la comparación daría TRUE desde el momento en que las FECHAS coinciden. La conversión se hace de DATETIME a DATE.
- En el caso de MySQL 5.0.45, la conversión en estos casos debe ser explícita; si el formato de uno de los dos campos no coincide con el otro, toma el valor menor y lo lleva al formato mayor, es decir, de DATE a DATETIME (de esto estoy bien seguro porque lo uso en muchas consultas donde los campos de fecha y hora me llegan separados y uso ADDTIME() para obtener el DateTime); al hacer esta conversión el contenido del campo de la tabla pasa a ser '2008-07-24 00:00:00', con lo que sólo puede dar TRUE en un segundo preciso del día: la hora cero.
Técnicamente hablando, es un problema de cómo operan las funciones entre las dos versiones.
Entonces, si lo que quieres es que la consulta te devuelva TRUE, deberá ser:
Código:
SELECT * FROM `qqq` WHERE info = 'row1' AND problema = DATE(now( ));
Tip final:
En tu última frase, hablas en plural, por lo que pareciera que estoy respondiendo a un grupo de personas. Te recomiendo encarecidamente que en los foros solamente escribas tu. Si hay más participantes del trabajo, por favor que cada uno se inscriba por separado y postee por separado, porque de lo contrario no hay forma de saber a quién estoy respondiendo ni quien me está contestando.

Gracias.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 24/07/2008 a las 18:54