小编典典

使用DateTime.Now插入值时,SqlDateTime溢出

sql

最近,我在尝试执行操作时遇到了很奇怪的错误db.SubmitChanges()

SqlDateTime溢出。必须介于1/1/1753 12:00:00 AM和12/31/9999 11:59:59 PM之间。

关键是,我只用于DateTime.Now在对象中设置属性,并且在调用Response.Write(DateTime.Now.ToString());该属性后将其显示17-04-201318:03:13为应有的状态。

以前没有发生过,现在该功能总是中断。我完全一无所知-我的SQL Server上的日期似乎还可以。

可能是什么原因造成的?

编辑

我认为这不会有所帮助(IMO出现任何错误都太简单了),但是有我的功能:

public bool ReportLogIn(int UserID, string IP, int Succeed ... ) {
    A_UserLoginHistory Report = new A_UserLoginHistory();

    Report.IP = IP;
    Report.UserID = UserID;
    Report.Status = Succeed;
    Report.Date = DateTime.Now; //the only DateTime field
    ...

    try {
        db.A_UserLoginRegistry.InsertOnSubmit(Report);
        db.SubmitChanges();
        return true;
    } catch (Exception e) {
        ErrorLog.AddError(e.ToString());
        return false;
    }
}

阅读 244

收藏
2021-03-23

共1个答案

小编典典

实际的问题是 SQL DateTime= / = C# Datetime

你需要改变两件事

  • 数据库将字段类型从更改DateTimeDateTime2

  • 查询您需要明确

    SqlCommand cmd = new SqlCommand("insertsomeDate", conn);
    

    cmd.CommandType = CommandType.StoredProcedure;
    cmd.Parameters.Add(“@newDate”, SqlDbType.DateTime2).Value = yourDate; //<- as example

2021-03-23