Если у вас есть ввод скажем @matchDate ... вы можете создать дату начала / окончания для вашего диапазона. Вы должны использовать @startDate в качестве точки времени 0 для вашей даты, при этом @endDate это значение +1. Вам нужно сопоставить> = @startDate и <@ endDate. </p>
@matchDate DATETIME -- passed in with a given datetime
...
DECLARE @startDate DATETIME;
DECLARE @endDate DATETIME;
-- this will give you the DateTime without the Time part, note if you
-- are storing dates in UTC, you will want to pass in your starting
-- DateTime as the UTC zero hour, and skip this conversion.
SET @startDate = DATEADD(day, 0, DATEDIFF(day, 0, @created_date))
-- this will give you the @startDate + 1 Day
Set @endDate = DATEADD(dd, 1, @startDate);
...
SELECT ...
FROM ...
WHERE [MyDateCol] >= @startDate AND [MyDateCol] < @endDate
Когда вы делаете соответствующую дату для сопоставления, лучше всего указать диапазон, вы МОЖЕТЕ сделать сокращение как вашей даты совпадения, так и даты вашего столбца до части даты, но это будет меньше быстрее, чем использование> = и <для диапазона. </p>
Опять же, при хранении в UTC, вы захотите иметь начало в UTC. Что я рекомендую для приложений, которые будут обслуживать несколько часовых поясов. Недавно я опубликовал статью о выполнении постраничных результатов в sproc , которая включает совпадение даты и времени, если вам интересно.