Nói chung, tập các timestamps không phải là well-ordered, điều này có nghĩa là bạn không thể có được một dấu thời gian "cuối cùng" mà bán thời gian lên đến phút là 2009-05-06 14:58
.
Trong SQL Server
, mà giữ một phần thời gian của một datetime như một số 1/300
phân số thứ hai sau nửa đêm, điều này timestamp "cuối cùng" sẽ là 2009-05-06 14:58:59.997
, nhưng điều này không đảm bảo tương thích với các phiên bản tương lai của với TIMESTAMP
lưu trữ khác phương pháp.
Điều đó có nghĩa bạn sẽ cần phải chia tình trạng BETWEEN
của bạn thành hai điều kiện, một trong số đó là strict less
hơn phút tiếp theo:
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
Giải pháp này có hiệu quả sẽ sử dụng chỉ số trên Date
Mã của bạn hoạt động chính xác –