C# 为什么我可以插入MaxDate而不是MinDate
在使用可为空的datetime列插入my table时,插入C# 为什么我可以插入MaxDate而不是MinDate,c#,sql-server,datetime,sqldatetime,C#,Sql Server,Datetime,Sqldatetime,在使用可为空的datetime列插入my table时,插入datetime.MinDate会引发错误: “将字符数据类型转换为 日期时间数据类型导致 日期时间值超出范围。“ 然而,当我使用MaxDate时,它工作正常吗? 我实际上想将此值插入为null,但在PropertyInfo.SetValue()中传递null值只是自动设置为MinDate,有什么建议吗?的范围是1753-01-01到9999-12-31,而从0001-01-01 12:00:00午夜到9999-12-31 11:59:
datetime.MinDate
会引发错误:
“将字符数据类型转换为
日期时间数据类型导致
日期时间值超出范围。“
然而,当我使用MaxDate时,它工作正常吗?
我实际上想将此值插入为null,但在PropertyInfo.SetValue()
中传递null值只是自动设置为MinDate
,有什么建议吗?的范围是1753-01-01到9999-12-31,而从0001-01-01 12:00:00午夜到9999-12-31 11:59:59
因此DateTime.MinValue
低于Sql Server的最小值,而DateTime.MaxValue
适合Sql ServerDateTime
使用空值:
DateTime?
可以在内存中使用空值。您使用的是什么编程语言和数据库系统?我猜您在这里使用反射,就像使用“PropertyInfo.SetValue()”一样,但您能否向我们展示更多的代码,当你在下面的评论中提到这一点时,你属于哪一类呢?很好也很有效。那么:在运行insert时,有没有办法通过c#向这个值插入一个普通的空值?只需在db上使字段为空,如果为空,不要传递任何值。如果你使用SqlCommands,直接使用DBNull.value而不是空值!我尝试根本不设置它,还尝试了PropertyInfo.SetValue(this,DBNull.Value,null),两者仍然在向命令文本发送MinValue…您还可以使用SqlDateTime.MinValue
。