datetime2 データ型を datetime データ型に変換すると範囲外の値になります 質問する

datetime2 データ型を datetime データ型に変換すると範囲外の値になります 質問する

5 列のデータテーブルがあり、行にデータが入力され、トランザクションを介してデータベースに保存されます。

保存中にエラーが返されます:

datetime2 データ型を datetime データ型に変換した結果、範囲外の値になりました

読んで字のごとく、私のデータテーブルには のタイプがありDateTime2、私のデータベースには があるということになりますDateTimeが、これは誤りです。

日付列はDateTime次のように設定されます。

new DataColumn("myDate", Type.GetType("System.DateTime"))

質問

これはコードで解決できますか、それともデータベース レベルで何かを変更する必要がありますか?

ベストアンサー1

短い答え

これは、 DateTimeフィールドに値を初期化しない場合に発生する可能性があります。フィールドはNULL値を受け入れず、値型であるため、null 非許容の DateTime 型のデフォルト値が使用されます。

値を設定すると問題は解決しました!

長い回答

の値は(または01/01/0001)default(DateTime)であり、有効な SQL値ではありません。DateTime.MinValuenew DateTime(1, 1, 1)datetime

SQL Serverのdatetimeの最小有効値は01/01/1753グレゴリオ暦を使用しているためです。ただし、SQL Server DateTime2 は 01/01/0001 から始まる日付をサポートしています。Entity Framework は既定で日付を表すために DateTime2 を使用するため、生成された SQL は、生成された DateTime2 値を SQL Server 側の DateTime 値に暗黙的に強制変換します。

おすすめ記事