Я всегда получаю дату фильтра в datetime, без времени (время = 00: 00: 00.000)
DECLARE @FilterDate datetime --final destination, will not have any time on it
DECLARE @GivenDateD datetime --if you're given a datetime
DECLARE @GivenDateS char(23) --if you're given a string, it can be any valid date format, not just the yyyy/mm/dd hh:mm:ss.mmm that I'm using
SET @GivenDateD='2009/03/30 13:42:50.123'
SET @GivenDateS='2009/03/30 13:42:50.123'
--remove the time and assign it to the datetime
@FilterDate=dateadd(dd, datediff(dd, 0, @FilterDateD), 0)
--OR
@FilterDate=dateadd(dd, datediff(dd, 0, @FilterDateS), 0)
Вы можете использовать это предложение WHERE для фильтрации:
WHERE ColumnDateTime>=@FilterDate AND ColumnDateTime<@FilterDate+1
это даст все матчи, которые начнутся в день или после начала 2009/03/30 или до полного дня 2009/03/30
Вы можете сделать то же самое для параметров фильтра START и END. Всегда устанавливайте дату начала в качестве даты и времени и используйте нулевое время в нужный день, а также ставьте условие "> =". Всегда делайте конечную дату нулевым временем на следующий день после того, как вы хотите, и используйте «<». При этом вы всегда будете правильно включать любые даты, независимо от временной части даты. </p>