关于SqlDateTime溢出的问题

问题: 

  项目中为了在时间上保持一致性,将所有时间都转化为了UTC时间。

  其中有一段SqlDateTime.MinValue的代码,由于疏忽将其转为UTC时间后导致了

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

原因: 

  数据库中的dateTime类型,最小值是 1/11753 12:00:00,而当SqlDateTime.MinValue转换为UTC的时间后,超出了这个最小值范围。所以导致了这 个错误。

总结: 

  在.NET FrameWork中,DateTime类型的最小值是1/1/0001 0:00:00,而这个值很明显是超过了数据库的dateTime类型的限制。所以在和数据库操作相关的字段要使用SqlDateTime类型,而不应该使用DateTime。

时间: 2024-12-21 08:11:43

关于SqlDateTime溢出的问题的相关文章

解决:SqlDateTime 溢出。必须介于 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM 之间提示问题

提示信息如下 “/”应用程序中的服务器错误. SqlDateTime 溢出.必须介于 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM 之间. 问题现象: 问题原因: 出现个问题的原因是:在更新或者添加数据,出现的错误,再给parameters传递值没有对DateTime类型字段没有传递值,默认为null 但是在sqlserver里面对DateTime类型取值范围是:介于 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:5

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

原因: 出现这种问题多半是因为你插入或者更新数据库时,datetime字段值为空默认插入0001年01月01日造成datetime类型溢出. 传给数据库表的时间类型值是null值.这里的null指的是程序代码中的null,多数出现这种情况的场景是:在程序里面定义了一个时间类型的变量,没有给赋值,就传给数据库,这时这个变量的值默认是赋成了01年01月01日;由于数据库中DateTime类型字段,最小值是1/1/1753 12:00:00,而.NET Framework中,DateTime类型,最小

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

传给数据库的时间类型的值为NULL,或者为DateTime.MinValue,或者为Convert.toDate(null),即(0001/01/01 0:00:00) 导致传到数据库的值为01年01月01日,从而导致溢出 using System; using System.Collections.Generic; using System.Data.SqlTypes; using System.Linq; using System.Text; using System.Threading.T

MVC+NHibernate笔记

Nhibernate 要求model实体类对于lazy="true" ,字段属性前需要加 virtual sqlserver2005和oracle10g的hibernate.cfg.xml如何配置?A:sqlserver2005配置如下<!-- NHibernate sqlserver2005配置--><hibernate-configuration  xmlns="urn:nhibernate-configuration-2.2" > &l

ASP.NET常见错误大全

1.检测到有潜在危险的 Request.Form 值 原因: (1)在提交数据的页面或webconfig中没有对validateRequest的属性进行正确的设置 (2)HTML里面写了两个<form>引起 解决: 方案一: 在.aspx文件头中加入这句: <%@ Page validateRequest="false" %> 方案二: 修改nfig文件: <configuration> <system.web> <pages va

hibernate 出错 集合

Lazy="false"反而出错 错误信息: “System.Configuration.ConfigurationErrorsException”类型的异常在 Spring.Core.DLL 中发生,但未在用户代码中进行处理 其他信息: Error creating context '/hotelmis': Could not find the dialect in the configuration 从错误信息看到是配置文件出了问题,出现dialect的地方只有一个 <pro

DBImport v3.44 中文版发布:数据库数据互导及文档生成工具(IT人员必备)

前言: 距离上一个版本V3.3版本的文章发布,已经是1年10个月前的事了. 其实版本一直在更新,但也没什么大的功能更新,总体比较稳定,所以也不怎么写文介绍了. 至于工作上的事,之前有半年时间跑去学英语.考驾照.到健身房请私教,远离了一下代码的世界,现在又回归了. 最近上班了,新的公司需要招.NET系.产品经理,有兴趣的可以左侧扣我(我部门要人,地点广州). 另外:阿里最近收购了一家公司,也需要Java系的高手和测试人员,有兴起的也可以扣我(我朋友的部门要人,地点广州). 嗯,闲话少说,看看工具的

Tomcat内存溢出解决办法

使用Java程序从数据库中查询大量的数据时出现异常:java.lang.OutOfMemoryError: Java heap space在JVM中如果98%的时间是用于GC且可用的 Heap size 不足2%的时候将抛出此异常信息.JVM堆的设置是指java程序运行过程中JVM可以调配使用的内存空间的设置.JVM在启动的时候会自动设置Heap size的值,其初始空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)是物理内存的1/4.可以利用JVM提供的-Xmn -Xms -Xmx等

如何将超级大(肯定溢出)的数用数组来表示

算法原理:以2^10000为例 在最高数组位以2的幂次相乘,当最高位>10,将高位保存在低一位的数组中2^5 在数组中以23形式保存,最后以反向输出 /*在程序中如果要是表示2^1000次方形式,明显肯定溢出,如果用数组形式表示嗯*/ #include<stdlib.h> #include<stdio.h> #define ARRAY_LEN 4000 int main() { int ar[ARRAY_LEN]={0}; int i,j,print_flag=0,jinw;