私はSQL Serverデータベースを持っています。私のテーブルの1つにSQL DATETIME
カラムがあります。この列は、レコードの作成時に入力する必要はありませんが、後で変更する必要があります。ASP.NET MVC 5でデフォルトのDateTimeを使用する正しい方法
DateTime
はnull可能ではないことをご理解ください。 datetime2
の既定値は1/1/0001ですが、SQL Serverの最小値は1/1/1753です。
Why when I insert a DateTime null I have "0001-01-01" in SQL Server?
だから、私の質問は、これを行うための正しい方法は何ですか? po.PODate
をSQL Serverの最小値(1/1/1753)に設定するにはどうすればいいですか。
ApplicationDbContext db = new ApplicationDbContext();
PurchaseOrder po = new PurchaseOrder();
po.PODate = new DateTime(1753, 1, 1); // Best way?
// po.PODate = DateTime.MinValue; Doesn't work because DateTime.MinValue is 1/1/0001
// po.PODate = null; Doesn't work because DateTime is non-nullable value type
// po.PODate = DBNull.value; Doesn't work because it is for type System.DBNull not DateTime
db.PurchaseOrders.Add(po);
db.SaveChanges();
なぜレコードを作成するときに 'DateTime.Now'を使用しないのですか? –
私はPODateのデフォルト値を現在の時刻にしたくないので、決して起こらないはずの "ばかげた" DateTimeにしたいと思っています。後で、時間は現実的なDateTimeに変更されます。 –
次に、nullを受け入れるようにプロパティを変更します。 'DateTime PODate {get;セット; } 'と' DateTime? PODate {get;セット; } '。偽の(またはばかげた)データを提供することはベストプラクティスではありません。データを必要としない場合は、それを 'NULL'として設定し、後でその値を更新します。 –