当前位置: 代码迷 >> 综合 >> SqlDateTime 溢出
  详细解决方案

SqlDateTime 溢出

热度:38   发布时间:2024-01-12 05:08:17.0

在datetime类型的数据进行更新时候,提示 SqlDateTime 溢出。必须介于 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM之间—解决办法

错误原因
传给数据库的时间类型的值为NULL,或者为DateTime.MinValue插入或者更新数据库时,datetime字段值为空默认插入0001年01月01日造成datetime类型溢出。

由于数据库中DateTime类型字段,最小值是1/1/1753 12:00:00,而.NET Framework中,DateTime类型,最小值是1/1/0001 0:00:00,显然,超出了sql的值的最小值范围,导致数据溢出错误。
解决方案
1、看看是否没有把数据库中datetime类型必须赋值的没有进行赋值(我的是这个情况)

2、使用System.Data.SqlTypes.SqlDateTime.MinValue替代System.DateTime类型,这样SqlDateTime的MinValue和Sql中DateTime的范围吻合,就不会再出现以上的错误了。3、在C#中,数据NULL值转换成DataTime时为DateTime.MinValue=0001-01-01

但数据库时间范围是1/1/1753 -
解决方法为

f (date == System.DateTime.MinValue)
XXX= null
else
XXX=datetime.now;

通常情况下,我们不在日期字段里存入空值.
当没有日期值时存入'1900-1-1',这个叫做默认时间值。
在读取数据的时候,遇到1900-1-1就认为数据库该时间没有值