最近,我在尝试执行操作时遇到了很奇怪的错误db.SubmitChanges():
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为应有的状态。
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; } }
实际的问题是 SQL DateTime= / = C# Datetime
SQL DateTime
C# Datetime
你需要改变两件事
数据库将字段类型从更改DateTime为DateTime2
DateTime
DateTime2
查询您需要明确
SqlCommand cmd = new SqlCommand("insertsomeDate", conn);
cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.Add(“@newDate”, SqlDbType.DateTime2).Value = yourDate; //<- as example