【问题标题】:The conversion of a datetime 2 data type to a datetime data type resulted in an out-of-range value [duplicate]将 datetime 2 数据类型转换为 datetime 数据类型导致值超出范围 [重复]
【发布时间】:2016-11-04 17:30:37
【问题描述】:

无法理解这个错误的原因。

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

Sql server中该列的数据类型为DateTime,创建该列时选择了Not Null。

在调试系统日期时间保存在SaveChanges列中发生异常。

在搜索中我得到了这个

Stack Over Flow

The Conversion.. 但对我的情况没有帮助。

型号

public class Student
{  
    [Key]
    public int StudentId { get; set; }
    public DateTime CreatedDate { get; set; }

}

动作

public ActionResult Save(ViewModels.Student student)
{
        var model = new ViewModels.Student();
        model.CreatedDate = System.DateTime.Now;
        db.Student.Add(student);
        db.SaveChanges();
        return View(model);
}

【问题讨论】:

  • 你保存的student,而不是model,大概student.CreatedDate是默认的DateTime.MinDate(超出范围)
  • @Stephen 我试过 student.CreatedDate = System.DateTime.Now 也是同样的错误,我错过了一些东西。
  • 如果您在保存student 之前设置它应该可以正常工作(假设没有其他DateTime 字段)
  • @Stephen Muecke 成功了。

标签: c# asp.net-mvc-4


【解决方案1】:

SqlDateTime.MinValue 是 1753 年 1 月 1 日,而 DateTime.MinValue 是 0001 年 1 月 1 日

你需要处理这个并确保它在你保存时高于最小值

【讨论】:

    猜你喜欢
    • 2019-12-23
    • 1970-01-01
    • 2011-04-07
    • 2011-11-12
    • 2016-02-08
    相关资源
    最近更新 更多