首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SqlDateTime溢出,但我需要NULL或MinValue

SqlDateTime溢出,但我需要NULL或MinValue
EN

Stack Overflow用户
提问于 2011-01-13 04:09:14
回答 4查看 3.3K关注 0票数 1

在这个项目中,我正在跟踪某些内容的创建、编辑和最终处理时间。我为此设置了三个DateTime字段。下面的代码是在我创建记录时使用的。

代码语言:javascript
复制
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来处理它。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 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“滴答”以几分之一秒为单位表示)。

票数 3
EN

Stack Overflow用户

发布于 2011-01-13 04:17:14

您使用的是哪个版本的SQL Server?如果您使用的是SQL2008(或2008 R2),则可以使用datetime2数据类型,它可以支持所有的.NET DateTime类型。

否则,使用NULL (您的模型将需要具有Nullable<DateTime>类型的属性),或者在数据类型的限制范围内,并且DateTime.MinValue超出SQL datetime类型的限制。

票数 2
EN

Stack Overflow用户

发布于 2011-01-13 04:11:57

创建您自己的最小日期-值为1/1/1753 12:00:00 AM的日期变量,并使用该变量而不是DateTime.MinValue

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4673509

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档