为什么当我插入DateTime null时我在SQL Server中有“0001-01-01”?
我尝试在我的数据库中为字段类型’date’插入值null(DateTime),但我总是得到‘0001-01-01’ 。 我不明白,这个字段“允许空值”,我不知道为什么我有这个默认值。
我正在使用C#asp .net和MVC(entity framework),这是我的代码:
Budget_Synthesis newBS = new Budget_Synthesis { Budget_Code = newBudgetCode, Last_Modified_Date = null }; db.Budget_Synthesis.AddObject(newBS);
Last_Modified_Date是否输入System.DateTime? 所以我不知道为什么他们改变这个’null’。
如果我尝试在我的应用程序上显示该值,我会得到01/01/0001 00:00:00
和0001-01-01
与SSMS
有人可以解释为什么我不能得到一个真正的’NULL’?
最好的祝福
我认为这是与null对应的值
如果Last_Modified_Date
的类型为DateTime
,则不能有“真正的空”,因为DateTime结构 – 正如其他人已经说过的那样 – 不可为空。 所以你的示例代码甚至都不会编译。
如果Last_Modified_Date
的类型是DateTime?
( Nullable
)你的代码是正确的,但是 – @Nikola Dimitroff在他的回答中说 – 你的数据库中不能有“真正的空”,因为DateTime?
的默认值DateTime?
是01/01/0001 00:00:00。
您正在寻找的“真正的空”是DBNull.Value
,但您只能将其用于System.DBNull类型; 如果你指定Last_Modified_Date = DBNull.Value
,无论Last_Modified_Date
的类型是Last_Modified_Date
,你的代码都不会编译。
在说你试图放置一个null DateTime
,你使用的是Nullable
(又名DateTime?
)还是只是DateTime
? 后者是值类型,其默认值正好是01/01/0001 00:00:00