C# 将datetime2数据类型转换为datetime数据类型导致值超出范围
当我想保存C# 将datetime2数据类型转换为datetime数据类型导致值超出范围,c#,C#,当我想保存Datetime时,我在数据库中有一种Datetime。现在一切正常。但当我想保存我的值时,我得到了一个错误 LogTime = log.AnswerTime ?? DateTime.Now 将datetime2数据类型转换为datetime数据类型导致值超出范围 日志时间值为:4/3/2013 12:05:04 PM 我认为一切都没问题,但为什么呢?在.NET DateTime2和DateTime中都映射到System.DateTime,所以没有任何
Datetime时,我在数据库中有一种Datetime。现在
一切正常。但当我想保存我的值时,我得到了一个错误
LogTime = log.AnswerTime ?? DateTime.Now
将datetime2数据类型转换为datetime数据类型导致值超出范围
日志时间值为:4/3/2013 12:05:04 PM
我认为一切都没问题,但为什么呢?在.NET DateTime2和DateTime中都映射到System.DateTime,所以没有任何转换。问题来自于数据库如何处理这两种数据类型。例如,MSSQL以不同的方式处理这两个问题。在MSSQL中,DATETIME支持1753/1/1到9999/12/31,而DATETIME2支持0001/1/1到9999/12/31 这意味着,如果从DateTime2列中从数据库中读取null值,将得到0001/1/1,这肯定是一个超出范围的值 NET在这方面为您提供了一些帮助,您可以在此处阅读 确保您使用的是SqlDb类型,如果您使用的是数据网格,请确保您的列正确使用typeof,例如
new DataColumn("myDate", typeof(DateTime))
这不是错误的原因,因为在上面提供的代码中,空日志日期默认使用“DateTime.Now”
DateTime.Now
应该始终是SmallDateTime字段的有效值(除非您将电脑时钟设置回300年),但是,我目前在尝试将{04/10/2013 12:49:00}的“DateTime.Now”值保存到SQL SmallDateTime字段时遇到了完全相同的错误。令人沮丧的是,在这样的情况下,我在任何地方都找不到正确的答案。