2

我有一种日期时间,当我想保存 DateTime.Now所有东西时在数据库中是好的。但是当我想保存我的值时我得到错误

                LogTime = log.AnswerTime ?? DateTime.Now

将 datetime2 数据类型转换为 datetime 数据类型导致值超出范围。

LogTime 值为:4/3/2013 12:05:04 PM

我认为一切都很好,但为什么呢?

4

1 回答 1

3

在 .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))
于 2013-04-13T13:46:45.283 回答