我有一种日期时间,在数据库中我想要保存DateTime.Now
所有东西都没问题。但是当我想保存我的价值时我得到错误
LogTime = log.AnswerTime ?? DateTime.Now
将datetime2数据类型转换为日期时间数据类型会导致超出范围的值。
LogTime值为:4/3/2013 12:05:04 PM
我觉得一切都好,但为什么呢?
答案 0 :(得分: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))