将datetime2数据类型转换为日期时间数据类型会导致超出范围?

时间:2011-09-12 10:18:37

标签: sql silverlight sql-server-2008 silverlight-4.0

我正在处理应用程序包含一个datepicker,如果我将该选择器中的时间设置为一个非常旧的值或将来当我尝试将此值保存在数据库中时服务器抛出此异常,原因是什么它?

  

将datetime2数据类型转换为日期时间数据类型会导致超出范围的值。   声明已经终止。

4 个答案:

答案 0 :(得分:66)

DateTime 的范围为:1753年1月1日至9999年12月31日

DateTime2 的范围为:0001-01-01至9999-12-31

因此,如果您在1753年之前输入日期,则当表格中的字段属于DateTime类型时,您会收到此错误。

答案 1 :(得分:23)

实体框架将为值{01/01/0001 00:00:00}的字段添加默认日期,这超出了SQL Date Generation的范围。因此,为了使其工作,我们需要让EF不要生成默认日期,我们可以通过在该类的模型中执行以下操作使其可为空。

在这种情况下,EntityFramework会为LastLoggedIn字段生成默认值。如果datebase中的这个字段可以取空值,意味着我们可以通过在模型中进行以下操作使其可为空

 [Display(Name = "LastLoggedIn")]
        public DateTime? LastLoggedIn { get; set; }

答案 2 :(得分:3)

views-view-unformatted.html.twig

您可以按上述方式添加

答案 3 :(得分:0)

此错误也可能是由于错误地拼写了控制器操作的绑定列表中的字段名称引起的。在我的情况下,该日期默认为超出范围的日期,因为日期字段未按我认为的那样绑定。