В SQL округляют начальную и конечную дату до целых дат и используют> = @BeginDate и очень конкретно <@EndDAte. Боюсь, процесс "округления" не очень элегантен </p>
например.
SELECT @BeginDate = DATEADD(Day, DATEDIFF(Day, 0, @BeginDate), 0),
@EndDAte = DATEADD(Day, DATEDIFF(Day, 0, @EndDAte) + 1, 0)
select *
from weblogs.dbo.vwlogs
where Log_time >= @BeginDate
and Log_time < @EndDAte
and (@UserName Is null OR client_user=@UserName)
order by Log_time desc
Обратите внимание, что сначала я переместил "@UserName Is null", так как есть некоторые свидетельства того, что этот тест легко пройдет / не пройдёт и приведет к игнорированию второго теста с большей интенсивностью использования процессора (client_user = @ UserName), если первый тест - ИСТИНА (может, конечно, TommyRot ...)
Кроме того, для лучшей производительности вы должны явно назвать все нужные столбцы и не использовать «SELECT *» (но это могло быть только для целей этого вопроса)