En général, l'ensemble des horodateurs n'est pas well-ordered, cela signifie que vous ne pouvez pas obtenir une « dernière » horodatage dont à temps partiel jusqu'à minutes est 2009-05-06 14:58
.
Dans SQL Server
, qui maintient la partie du temps d'un datetime comme un certain nombre de 1/300
secondes fractions après minuit, cet horodatage « dernier » serait 2009-05-06 14:58:59.997
, mais ce n'est pas garanti pour être compatible avec les versions futures de avec d'autres stockage TIMESTAMP
méthodes
Cela signifie que vous devez diviser votre condition BETWEEN
en deux conditions, dont une étant strict less
que la minute suivante:
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
Cette solution efficace utiliser les index sur Date
Votre code fonctionne correctement –