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

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

错误场景:

用ASP.NET制作web网站的添加用户功能时,调用写好的存储过程出错哭

错误提示:

SqlDateTime 溢出。必须介于 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM之间第2张

出错原因:

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

传给数据库表的时间类型值是null值。这里的null指的是程序代码中的null,多数出现这种情况的场景是:在程序里面定义了一个时间类型的变量,没有给赋值,就传给数据库,这时这个变量的值默认是赋成了01年01月01日;由于数据库中DateTime类型字段,最小值是1/1/1753 12:00:00,而.NET Framework中,DateTime类型,最小值是1/1/0001 0:00:00,显然,超出了sql的值的最小值范围,导致数据溢出错误。

我遇到的情况是:

我是用sqlParameter传给存储过程需要的值,然后存储过程用insert语句等实现添加用户功能。有一些日期时间数据是不需要代码给传值的。但我的代码里面定义了所有的sqlparameter,多出来的sqlparameter虽然在数据库中没有参数接受,但如果传进来一个有问题的datetime类型,同样报错。

原来如此:

.NET Framework框架与数据库 时间类型最小值不同,从.NET Framework框架向数据库传时间类型的值会出错。

解决方法:

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

我对日期数据处理的方式,如下所示:如果日期在文本框中不填写,则给其赋一个最小值

  1. //教职工"出生日期";这里设定一个最小日期,防止添加数据库时,时间越界问题
  2. if(txtBornDate.Text.Trim()!="")
  3. {
  4. enStaff.BornDate=Convert.ToDateTime(txtBornDate.Text.Trim());
  5. }
  6. else
  7. {
  8. enStaff.BornDate=newDateTime(1900,1,1);
  9. }

免责声明:文章转载自《SqlDateTime 溢出。必须介于 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM之间》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Robot Framework安装使用Eclipse的常见使用错误及编译错误下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

MySQL Workbench 怎么创建数据库

第1步:单击MySQLWorkbench.exe快捷方式,弹出MySQLWorkbench界面 第2步:单击菜单栏Database按钮,弹出下拉菜单,单击Connect to Database,第3步:单击OK按钮,输入数据库密码第4步:单击工具栏按钮(第四个,即鼠标放在 上面显示Create a new schema in the connected s...

[NewLife.XCode]百亿级性能

NewLife.XCode是一个有10多年历史的开源数据中间件,支持nfx/netcore,由新生命团队(2002~2019)开发完成并维护至今,以下简称XCode。 整个系列教程会大量结合示例代码和运行日志来进行深入分析,蕴含多年开发经验于其中,代表作有百亿级大数据实时计算项目。 开源地址:https://github.com/NewLifeX/X(求s...

转: mysql create view 创建视图

以下的文章主要是对MySQL视图的描述,其中包括MySQ视图L概述,以及创建MySQL视图—create view与修改MySQL视图——alter view等相关内容的具体描述,以下就是文章的具体内容介绍。 一. 视图概述 MySQL视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数...

大数据量下高并发同步的讲解

对于我们开发的网站,如果网站的访问量非常大的话,那么我们就需要考虑相关的并发访问问题了。而并发问题是绝大部分的程序员头疼的问题, 但话又说回来了,既然逃避不掉,那我们就坦然面对吧~今天就让我们一起来研究一下常见的并发和同步吧。 为了更好的理解并发和同步,我们需要先明白两个重要的概念:同步和异步 1、同步和异步的区别和联系 所谓同步,可以理解为在执行完一个函...

TiDB数据库01Tidb体系架构01

1.我们到底需要一个什么样的数据库 1.1 需要的数据库特性 扩展性 强一致性、高可用性 支持SQL,ACID事务。 云原生 HTAP 兼容主流生态和协议 1.1.1 扩展性 Scale out也就是我们经常听到的弹性横向扩展。一是从弹性的角度看,颗粒度越小越好,常见的颗粒度有Cluster、Database、Schema、表、分表或者分区。二是数据...

NET Core3前后端分离开发框架

NET Core前后端分离快速开发框架 https://www.cnblogs.com/coldairarrow/p/11870993.html 引言 时间真快,转眼今年又要过去了。回想今年,依次开源发布了Colder.Fx.Net.AdminLTE(254Star)、Colder.Fx.Core.AdminLTE(335Star)、DotNettySoc...