Cita: Entiendo que si pongo las mismas fechas deberia dar como resultado las cargas del dia?
No exactamente.
Generalmente, cuando sólo indicas la fecha, sin la hora, los DBMS asumen hora cero (00:00:00), porque no tienen ese dato de comparación, ergo, estás consultando un valor que esté entre el 18/04/2013 00:00:00 y el 18/04/2013 00:00:00... Lo cual evidentemente no tiene mucho sentido, si los datos también llevan horas. Y si no las llevan, usar un rango carece de sentido.
Creo que lo que tienes que hacer es considerar que el rango incluya de forma implícita las horas:
Código SQL:
Ver originalAND DATE >= CONVERT(DATETIME, '20130418', 112)
AND DATE < CONVERT(DATETIME, '20130419', 112)
Cita: no uso el between porque es un sistema ya creado y funciona asi como está,
No se entiende el argumento. Si el funciona como está, no implica que funcione
bien. Sólo que
funciona...
Si puedes modificar la forma de parametrizar la fecha, bien puedes cambiarla por un BETWEEN, no hay nada que te lo impida, y es probable que ganes en performance.
Dos consultas que apuntan al mismo rango, pero con clausulas diferentes, pueden usar algoritmos internos distintos para obtener el resultado. Eso es algo que se ve solamente con el analizador de consultas.
yo te sugeriría que pruebes ambos casos sobre tu base y veas cuál es la que SQL Server resuelve con mejor método. Y si el campo usado es un DATETIME y está indexado, te sugiero que no uses sólo la fecha, sino que tome también la hora.... Es posible que cambie la solución del analizador.