SqlDateTime 溢出

错误:“SqlDateTime 溢出。必须介于 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM之间。”

出现这种问题多半是因为你插入或者更新数据库时datetime字段值为空默认插入0001年01月01日造成datetime类型溢出。

原因:

关于DateTime,在将DateTime类型,插入到数据库的时候,最容易出现的一种错误:“SqlDateTime 溢出。必须介于 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM 之间”原因是我们在取DateTime.MinValue的值,并插入到数据库的时候,DateTime.MinValue值范围和数据库DateTime类型数据范围不一致造成的。数据库中,DateTime类型字段,最小值1/1/1753 12:00:00,而.NET Framework中,DateTime类型,最小值为1/1/0001 0:00:00,显然,超出了Sql的值的最小范围,导致数据溢出的错误。

解决方法:

使用System.Data.SqlTypes.SqlDateTime.MinValue替代System.DateTime类型,这样SqlDateTime的MinValue和Sql中DateTime的范围吻合,就不会再出现以上的错误了。
0001-01-01 08:00:00?是 0001-01-01 00:00:00 吧...8点怎么出来的?

这是 DateTime.MinValue 不是 null...值类型不可为 null...只有可为空泛型类型才可以赋空值...注意 2.0 以上才支持...

如...

Nullable<DateTime> d = null;

or

DateTime? d = null;

把model .cs改成datetime?可空类型就可以了,就是程序里面的事值类型,数据库为null,转换成程序中默认的

1/1/0001 0:00:00,但这个范围不符合数据库的范围,所以报错

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。