Существует в настоящее время больше информации, так что я буду добавлять более подходящий ответ. Требования теперь хранимая процедура передается параметр типа Дата, не DateTime, а желание вернуть строки из таблицы на основе критерия против поля DateTime имени StartDateTime ...
create procedure dbo.spGetEntriesForOneDay
@DesiredDate DateTime
as
SET NOCOUNT ON;
SET @DesiredDate = DATEADD(day, DATEDIFF(day, 0, @DesiredDate), 0)
SELECT Field1, Field2 -- see note 1
FROM dbo.TableName
WHERE StartDateTime >= @DesiredDate -- see note 2
AND StartDateTime < DATEADD(day, 1, @DesiredDate) -- see note 3
Примечание 1 : Не используйте * в производственном коде, особенно в хранимой процедуре. Помимо расточительства по возврату столбцов, вам, вероятно, не нужно и исключению оптимизации индекса покрытия для подмножества требуемых столбцов вам потребуется перекомпилировать эту хранимую процедуру всякий раз, когда базовая таблица будет изменена, чтобы избежать непредсказуемых результатов.
ПРИМЕЧАНИЕ 2: Избегайте обертывания полей в функции. Поле, не завернутое в функцию, потенциально может быть сопоставлено оптимизатором с индексом, в то время как поле, завернутое в функцию, никогда не будет.
ПРИМЕЧАНИЕ 3: @Martin Smith и @RedFilter верны в том, что точность .997 предполагает, что тип данных DateTime навсегда; этот подход является более перспективным доказательством, поскольку не делает предположений о точности данных.
или я могу передать даты что-то вроде этого: '01/17/2012' –
Что такое тип данных' StartDateTime'? –
datatype is 'datetime' –