0

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 を付けて完全な日付を渡していたことを意味しますか? 最初に文字列に変換せずに、時間を含めずに日時値をデータベースに渡すにはどうすればよいですか?

4

3 に答える 3

2

あなたはただ試すことができますmy_time.Date

cmd.Parameters.AddWithValue("@date", my_time.Date);
于 2012-09-07T10:12:40.387 に答える
0

文字列として渡さないでください。そうしないと、カルチャのフォーマットで問題が発生します。

SqlDateTime代わりに使用してみてください。

于 2012-09-07T10:10:13.770 に答える
0

日付を文字列に変換していません- AddWithValue はそれが日付であることを認識していますが、それは であるdatetimeため、時間コンポーネントがあります。あなたの販売には時間要素がありますか?

 SELECT * FROM sales WHERE DateDiff(d, @date, date) = 0
于 2012-09-07T10:11:18.680 に答える