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的范围吻合,就不会再出现以上的错误了。

但是如果直接将System.Data.SqlTypes.SqlDateTime.MinValue 赋值给 System.DateTime类型的变量会出现如下错误:错误 86 无法将类型“System.Data.SqlTypes.SqlDateTime”隐式转换为“System.DateTime”。存在一个显式转换(是否缺少强制转换?) 我们可以采用Convert.ToDateTime来进行强制转换。

附:SQLServer数据库的DateTime默认值为 1900/1/1 00:00:00,如果插入null值,会默认为1900/1/1 00:00:00。



您可能感兴趣的文章:sql server中datetime字段去除时间的语句sql语句中如何将datetime格式的日期转换为yy-mm-dd格式使用 MySQL Date/Time 类型sql server中datetime字段去除时间代码收藏sqlserver和oracle中对datetime进行条件查询的一点区别小结SQLSERVER 中datetime 和 smalldatetime类型分析说明mysql From_unixtime及UNIX_TIMESTAMP及DATE_FORMAT日期函数MySQL时间字段究竟使用INT还是DateTime的说明Sql中将datetime转换成字符串的方法(CONVERT)MySql用DATE_FORMAT截取DateTime字段的日期值


温馨提示:内容为网友见解,仅供参考
无其他回答

SqlDateTime溢出该怎么解决
解决方法:使用System.Data.SqlTypes.SqlDateTime.MinValue替代System.DateTime类型,这样SqlDateTime的MinValue和Sql中DateTime的范围吻合,就不会再出现以上的错误了。但是如果直接将System.Data.SqlTypes.SqlDateTime.MinValue 赋值给 System.DateTime类型的变量会出现如下错误:错误 86 无法将类型“System.Data....

SqlDateTime溢出该怎么解决
SqlDateTime溢出该怎么解决 使用System.Data.SqlTypes.SqlDateTime.MinValue替代System.DateTime类型,这样SqlDateTime的MinValue和Sql中DateTime的范围吻合,就不会再出现以上的错误了。

SqlDateTime 溢出。必须介于 1\/1\/1753 12:00:00 AM 和 12\/31\/9999 1...
你可以吧数据库中datetime型修改成varchar型,然后使用的时候只需要cast一下就行了,这个错误是系统时间本身只能识别从1\/1\/1753 12:00:00 AM 到 12\/31\/9999 11:59:59 PM时间阶段,否则就会报告SqlDateTime 溢出

SqlDateTime 溢出。必须介于 1\/1\/1753 12:00:00 AM 和 12\/31\/9999 1...
解决方法为 if (date == System.DateTime.MinValue)XXX= System.DateTime.Now;else XXX=date;--- 通常情况下,我们不在日期字段里存入空值.当没有日期值时存入'1900-1-1',这个叫做默认时间值。在读取数据的时候,遇到1900-1-1就认为数据库该时间没有值 ...

excel文件每次导入报错: sql datetime溢出,如何解决
看看是否是程序对于null的处理会出现异常。如果没有。那看看是否可以修改程数据库的表结构,实在不行的话。比较笨的方式就是excel中给一个初值,但是彻底的还是修改程序

在C#中SqlDateTime overflow是怎么回事
SqlDateTime是有范围的,异常是你给SqlDateTime赋值超过它的日期范围。造成这种原因一般是你给它赋的值是空值。

在sql中,为什么convert(datetime,A)会出现数据溢出,A为timestmap数据类型...
将某种数据类型的表达式显式转换为另一种数据类型。CAST 和 CONVERT 提供相似的功能。语法 使用 CAST:CAST ( expression AS data_type )使用 CONVERT:CONVERT (data_type[(length)], expression [, style])参数 expression 是任何有效的 Microsoft? SQL Server? 表达式。有关更多信息,请参见表达式。

...nvarchar 数据类型到 datetime 数据类型的转换产生一个超出范围的...
1 先看是否为日期格式,如果是,直接用 birthday 比较 2 如果不是日期格式,看看长度 3 根据长度具体处理, 如:长 7 位,后面加个天数...如:SELECT * FROM cdsgus WHERE CASE ISDATE(birthday) WHEN 1 THEN birthday ELSE CASE LEN(birthday) WHEN 7 THEN replace(birthday, '.', '\/') + '\/...

...for SQL Server 错误 '80040e07' datetime 值越界。
修改时间格式改成yyyy-MM-dd,这个要修改控面板,然后再修改注册,然后重启电脑,不清楚具体可以百度。不行试下下面的,以前我最后是用下面这个解决的 打开企业管理器-->你注册的SQL server-->安全性 -->登录,双击你所用的登录用户,弹出 sql server 登录属性,修改默认设置 中的语言 他的sql登录...

sql 大于datetime类型的数据怎么写
如果想查询2012年11月11日之后的记录,把'<'号改成'>'即可,注意一定要用单引号引起来,不能不用引号,也不能用双引号,只能用单引号 或者使用转换函数cast(),把'2012-11-11'转换成日期型,方法:cast('2012-11-11' as datetime)。上述查询还可以写成 SELECT id FROM table WHERE add_user...

相似回答
大家正在搜