在这个项目中,我正在跟踪某些内容的创建、编辑和最终处理时间。我为此设置了三个DateTime字段。下面的代码是在我创建记录时使用的。
newsArchive.CreateDateTime = DateTime.Now;
newsArchive.ModifyDateTime = DateTime.MinValue;
newsArchive.SendDateTime = DateTime.MinValue;
naRepository.Add(newsArchive);
naRepository.Save();我收到"SqlDateTime溢出。必须在1/1/1753 12:00:00 am和12/31/9999 11:59:59 PM之间。“当我尝试添加它的时候。我知道我不能发送NULL。你会怎么处理这件事?
我正在使用Linq2SQL来处理它。
发布于 2011-01-13 04:18:42
为什么不能发送null?Linq2SQL支持可为空的值类型;您只需要DB中的列为可为空的,否则L2S将不会使用可为空的类型来投影DAO。
您可以使用(DateTime)(SqlDateTime.MinValue)代替DateTime.MinValue。这将使用与SQL兼容的最小datetime值,显式转换为DateTime。
尽管SqlDateTime和DateTime实际上都将时间存储为UInt64的“滴答”值,但这两种类型之间的区别在于,SQL Server使用与UInt64的DateTime不同的纪元(0的值)和不同的分辨率(1“滴答”以几分之一秒为单位表示)。
发布于 2011-01-13 04:17:14
您使用的是哪个版本的SQL Server?如果您使用的是SQL2008(或2008 R2),则可以使用datetime2数据类型,它可以支持所有的.NET DateTime类型。
否则,使用NULL (您的模型将需要具有Nullable<DateTime>类型的属性),或者在数据类型的限制范围内,并且DateTime.MinValue超出SQL datetime类型的限制。
发布于 2011-01-13 04:11:57
创建您自己的最小日期-值为1/1/1753 12:00:00 AM的日期变量,并使用该变量而不是DateTime.MinValue
https://stackoverflow.com/questions/4673509
复制相似问题