我有一种日期时间,当我想保存 DateTime.Now
所有东西时在数据库中是好的。但是当我想保存我的值时我得到错误
LogTime = log.AnswerTime ?? DateTime.Now
将 datetime2 数据类型转换为 datetime 数据类型导致值超出范围。
LogTime 值为:4/3/2013 12:05:04 PM
我认为一切都很好,但为什么呢?
我有一种日期时间,当我想保存 DateTime.Now
所有东西时在数据库中是好的。但是当我想保存我的值时我得到错误
LogTime = log.AnswerTime ?? DateTime.Now
将 datetime2 数据类型转换为 datetime 数据类型导致值超出范围。
LogTime 值为: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 为您提供了一些帮助,您可以在此处阅读http://msdn.microsoft.com/en-us/library/bb675168.aspx。
确保您使用的是 SqlDb 类型,如果您使用的是数据网格,请确保您的列正确使用 typeof,例如
new DataColumn("myDate", typeof(DateTime))