1

DateTimeSQL Server で2 つの値を比較するクエリを作成しています。DateTimeSQL サーバーの形式は次のとおりです。

 2010-09-20 00:00:00.000

私は Entity Framework を使用していますが、現在直面している問題についてお話しさせてください。

Entity Framework で値を比較するDateTime場合、属性はデータベースと同じである必要があります。つまり、DateTime. 日付は投稿から取得され、それは文字列であることを意味します。ここでの問題は、どうすればそれらを変換してDateTime、データベースにあるのと同じ形式にすることができるでしょうか?

ユーザーの入力は文字列として取得され、私が行うことは次のとおりです。

DateTime start_date = Convert.ToDateTime(postValueHere);

しかし、値は期待どおりではありません:

2010/20/46 12:00:00 am

だから、私はそれにフォーマットを与えます:

string format = "yyyy-MM-dd 00:00:00.000";
string date = start_date .ToString(format);

しかし、今度は値が文字列になります。つまり、値を Entity Framework と比較することはできません。

db.Product.Where(x=>x.START_DATE== date)//error, cannot compare datetime with string.

ユーザーの入力を SQL Server と同じ形式に変換してから に変換するにはどうすればよいDateTimeですか?

4

2 に答える 2

2

DateTime.TryParseExact()を次のように試すことができます。

 DateTime start_date;
 DateTime.TryParseExact(strDate, "yyyy-MM-dd hh:mm:ss tt",
                        System.Globalization.CultureInfo.InvariantCulture,
                        System.Globalization.DateTimeStyles.None, out start_date);
 Console.WriteLine(start_date);

その他のカスタム形式については、こちらをご覧ください。

于 2013-04-08T14:16:21.273 に答える
0

EF を使用してデータベースからその日付値を取得している場合、DateTime 型のプロパティになるはずです。この値はただの DateTime 構造体であり、format はありません
投稿から解析された日付を調べると、デバッガーは.ToString()値に a を使用して、表示できる文字列を取得します。それはまだフォーマットのない DateTime 構造体です!

したがって、形式を気にせずに、DateTime 値を比較するだけです。

于 2013-04-08T14:18:31.657 に答える