In generale, l'insieme di timestamp non è well-ordered, questo significa che non è possibile ottenere un timestamp "ultimo" il cui tempo parte fino a minuti è 2009-05-06 14:58
.
In SQL Server
, che mantiene la parte di tempo di un datetime come un certo numero di 1/300
seconde frazioni dopo la mezzanotte, questa "ultima" timestamp sarebbe 2009-05-06 14:58:59.997
, ma questo non è garantito per essere compatibile con versioni future di con altri TIMESTAMP
stoccaggio metodi.
Ciò significa che è necessario dividere la sua condizione BETWEEN
in due condizioni, una delle quali è strict less
che il minuto successivo:
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
questa soluzione in modo efficiente utilizzare gli indici sulla Date
Il tuo codice funziona correttamente –