Как правило, вы должны думать о данных за конкретную дату как о данных, попадающих в диапазон, а не в какой-то момент времени. Поэтому в идеале ваш запрос должен использовать диапазон, например:
WHERE [Timestamp] >= @Date
AND [Timestamp] < DATEADD(DAY, 1, @Date)
В этом случае, к счастью, оптимизатор умный и все равно будет использовать индекс, если вы используете CONVERT(DATE, [timestamp])
против столбца. Однако во многих случаях вы должны быть осторожны, потому что это часто делает ваше предложение неискусным.
PS Timestamp
- это ужасное название столбца. Это тип данных в SQL Server, который не имеет ничего общего с датой или временем.