Generalnie zestaw znaczników czasu nie jest well-ordered, to oznacza, że nie może dostać „ostatni” znacznik czasu, którego czas część do minuty jest 2009-05-06 14:58
.
W SQL Server
, która utrzymuje razem część datetime jako liczby 1/300
drugiej frakcji po północy, to „ostatni” timestamp byłoby 2009-05-06 14:58:59.997
, ale to nie jest gwarantowane jest zgodny z przyszłymi wydaniami z innymi TIMESTAMP
przechowywania metody.
Oznacza to, że trzeba podzielić na dwie stan BETWEEN
warunkach, z których jeden jest strict less
niż następnego minutę:
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
Rozwiązanie to efektywnie wykorzystywać indeksów Date
Twój kod działa poprawnie –