En general, el conjunto de marcas de tiempo no es well-ordered, esto significa que no puede obtener un "último" marca de tiempo cuyo tiempo parcial hasta un minuto es 2009-05-06 14:58
.
En SQL Server
, que mantiene la parte de hora de una fecha y hora como un número de 1/300
segunda fracciones después de la medianoche, este "último" marca de tiempo sería 2009-05-06 14:58:59.997
, pero esto no se garantiza que sea compatible con futuras versiones de con otra TIMESTAMP
de almacenamiento métodos.
Eso significa que tendrá que dividir su condición BETWEEN
en dos condiciones, una de ellas siendo strict less
que el minuto siguiente:
select Count(Page) as VisitingCount,Page,CONVERT(VARCHAR(8),Date, 108) from scr_SecuristLog
where Date >= '2009-05-04 00:00:00'
AND Date < DATEADD(minute, 1, '2009-05-06 14:58')
and [user] in(select USERNAME
from scr_CustomerAuthorities)
group by Page,Date order by [VisitingCount] asc
Esta solución va a utilizar de manera eficiente los índices de Date
Su código funciona correctamente –