C# クエリで C# 日時値を使用するにはどうすればよいですか?
今まで以下のことを行ってきました。
Datetime my_time = new DateTime(2012, 09, 05);
cmd.Parameters.AddWithValue("@date", my_time);
cmd.CommandText = "SELECT * FROM sales WHERE date = @date";
結果セットから値を取得するときに null エラーが発生する今朝まで、これは正常に機能していました。
次のように、datetime 値から短い日付文字列を取得するように日付パラメーターを変更しました。
cmd.Parameters.AddWithValue("@date", my_time.ToShortDateString());
そして、それは再びうまく機能しているようです。
これを行う正しい方法は何ですか?明らかに、datetime 値を文字列に変換していますが、(おそらく) データベースがそれを datetime に変換し直してから、equality where 句を評価するだけですが、これは少し無意味に思えます。
編集:
私は SQL Server Compact Edition を使用しており、この例の日付フィールドの精度は 8 に設定されています (日付、時刻を除く)。それは、前に最後に 00:00:00.000 を付けて完全な日付を渡していたことを意味しますか? 最初に文字列に変換せずに、時間を含めずに日時値をデータベースに渡すにはどうすればよいですか?