より多くの情報が得られたので、より適切な回答を追加します。要件は、DateTime ではなく、Date 型パラメーターが渡されたストアド プロシージャであり、StartDateTime という名前の DateTime フィールドに対する基準に基づいてテーブルから行を返すことが望まれます...
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 データ型を永久に想定するという点で正しいです。このアプローチは、データ型の精度を想定していないため、より将来性があります。