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的范围吻合,就不会再出现以上的错误了。
 
例子:
static void Main(string[] args)
{
    try
    {
        SqlConnection conn = new SqlConnection("server=(local); database=test; Integrated
        Security=SSPI");
        conn.Open();
        SqlCommand command = new SqlCommand(
            @"INSERT INTO [Students] ([Name], [Age], [Birth]) VALUES (@name, @age, @birth)", 
            conn);
        SqlParameter p1 = new SqlParameter("@name", "acqy");
        SqlParameter p2 = new SqlParameter("@age", 27);
        SqlParameter p3 = new SqlParameter("@birth", SqlDateTime.MinValue.Value);
        command.Parameters.Add(p1);
        command.Parameters.Add(p2);
        command.Parameters.Add(p3);
        command.ExecuteNonQuery();
        conn.Close();
    }
    catch (Exception e)
    {
        Console.WriteLine(e.Message);
    }

原帖地址:http://blog.csdn.net/heicm/archive/2008/08/20/2800042.aspx

时间: 2024-11-03 09:27:05

SqlDateTime溢出类错误解决的相关文章

SqlDateTime溢出该怎么解决_MsSql

错误出现:导入数据时出现"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 A

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 A

有关tomcat内存溢出的完美解决方法_java

tomcat内存溢出设置JAVA_OPTS 答案1 设置Tomcat启动的初始内存 其初始空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)是物理内存的1/4.可以利用JVM提供的-Xmn -Xms -Xmx等选项可 进行设置 三.实例,以下给出1G内存环境下java jvm 的参数设置参考: JAVA_OPTS="-server -Xms800m -Xmx800m -XX:PermSize=64M -XX:MaxNewSize=256m -XX:MaxPermSize=128m -D

SqlDateTime 溢出

问题描述 我在添加操作时老是SqlDateTime溢出我用的是dateTimePicker哪位大侠可以帮我在线等 解决方案 解决方案二:你肯定是没有给那个字段赋值解决方案三:就是...解决方案四:也许楼上两位高手的解释是正确的,就是没有什么合理的说明!期待正解的出现.解决方案五:输入错误了吧SQL里面的时间必须介于1/1/175312:00:00AM和12/31/9999之间解决方案六:空字符串无法转换为datetime解决方案七:@lz:支持5楼高手的正解,可能是由于SqlDataTime支持

关于 SqlDateTime 溢出

大家好,我是阿牛曾,IT人员一枚 第一次写博客,原因是动手解决了一个小Bug,虽然很小不过很有纪念意义,哈哈 出现错误: 提示 "SqlDateTime 溢出.必须介于 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM 之间" 原因分析: 查阅了一些资料,原来在数据库中DateTime类型的字段最小值为1/1/1753 12:00:00,而.NET Framework框架中,DateTime类型的最小值为1/1/0001 0:00:00,超出了

Maven项目错误解决小结

Maven项目错误解决小结 注:整理错误,不喜欢为了一个小问题,占篇幅,所以请Ctrl+F自己查看,定位问题,愿为解决. 注:网络上的错误解决经验,只是作者在特定的条件下发生,或者适合你不适合你,请勿责怪,若无解决答案,请你请教他人或耐心解决,可以记录之后分享,我们爱分享,一起开始吧! 问题1: -Dmaven.multiModuleProjectDirectory system propery is not set. Check $M2_HOME environment variable an

WCF分布式开发常见错误解决(12)

WCF分布式开发常见错误解决(12):The server was unable to process the request,服务无法处理请求 进行WCF编程过程中会遇到这样的错误:服务无法处理的请求由于内部错误. 具体信息如下: The server was unable to process the request due to an internal error. For more information about the error, either turn on IncludeEx

谷歌浏览器打开提示没有注册类如何解决

  谷歌浏览器是当下比较热门的一款的软件,而且普及面相当的广,所以不管是国内的还是国外的很多用户都会去选择谷歌浏览器,但是最近不少用户反映说,在安装好谷歌浏览器之后,在打开浏览器时,出现了未注册类的提示,导致浏览器无法正常的打开,影响了用户正常的使用,那么,这该怎么办呢?下面,就和小编一起来看看谷歌浏览器打开提示没有注册类如何解决. 1.由于谷歌浏览器默认安装到C盘下,所以,有些朋友会把下载的谷歌浏览器安装程序解包使用,但是会出现未注册类的提示. 2.具体的解决方法是:在开始菜单处,输入"reg

WinXP安装软件时出现NSIS ERROR错误解决方法

  WinXP安装软件时出现NSIS ERROR错误解决方法.虽然微软已经停止对WinXP的支持,还是有不少用户依然坚持使用XP,不过在安装软件的时候也会出现一些问题,近日有小伙伴说会出现NSIS ERROR的错误,这是什么原因造成的呢?又要如何解决,下面就让小编一一道来. 一.NSIS ERROR什么意思 系统错误提示英文为"installer integrity check has failed. common causes include incomplete download and d