30/11/2009, 10:52
|
Colaborador | | Fecha de Ingreso: marzo-2008 Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 9 meses Puntos: 300 | |
Respuesta: Consulta por count(*) esto, substr(date_time,1,10)>='2009-10-21' and substr(date_time,1,10)<='2009-11-20', convierte la fecha en una cadena de texto y lo que hace es compararlas como cadena de texto con las fechas como si se tratase de una cadena de texto, y no como número que es lo que hay detrás de una fecha. Imagina la diferencia entre buscar lo que está entre Juan Martínez Rodríguez y Zamudio Sánchez, en la que la base debe comparar letra por letra y la posición que ocupa en el abecedario, y comparar entre 1 y 1000, donde compara números, algo mucho más rápido, porque entre otras razones su almacenamiento en binario es más corto,y su comparación más rápida. Eso es lo que creo que ocurre si aplicas substr a la fecha, una función de cadena de texto, y no de fecha, como es DATE, por citarte sólo una. DATE extrae el número correspondiente a la fecha sin el time en un datetime, mientras que substr la convierte en una cadena de texto..., vamos, como si la hubieras guardado en un campo varchar, y hace el cambio de fecha a texto. Creo que es eso, aunque seguro no estoy. |