質問は不明ですが、期待する行を返さない等価一致を実行しようとしているように見えるので、問題はミリ秒が問題になっていることだと推測しています。ここにはいくつかのアプローチがあります:
<オール>3 番目のオプションは、ほとんどの場合、最も効率的です。これは、インデックス作成をうまく利用でき、大量の CPU を必要としないためです。
たとえば、上記では、精度が秒*であるため、次のように使用します:
DECLARE @end datetime
SET @end = DATEADD(ss,1,@p_date)
次に、フォームの WHERE を追加します:
WHERE column_datetime >= @p_date AND column_datetime < @end
これは、column_datetime にクラスター化インデックスがある場合に最適に機能しますが、column_datetime に非クラスター化インデックスがある場合でも問題なく機能するはずです。
[*=@p_date にミリ秒が含まれている場合は、DATEADD
を介してそれらのミリ秒をトリミングするかどうかをさらに検討する必要があります 、または範囲を狭くするなど]