use*_*151 7 sql sql-server sql-server-2008 c#-3.0 c#-4.0
我想将时间存储在表中,并将其time(7)作为存储时间的数据类型。当我减去两个DateTimes 时,我得到了变量"1.18:36:36.7484253"的结果TimeSpan。但问题是,当我在表中插入这个值时,出现以下错误:
SqlDbType.Time溢出。值'1.18:36:36.7484253'超出范围。必须在00:00:00.0000000和之间23:59:59.9999999。
我知道这个错误,我的问题是我可以使用什么数据类型。我正在使用 SQL Server 2008 和 C#。
SQL Server 存储的时间不包含日期。有效范围应介于00:00:00.0000000和之间23:59:59.9999999,如消息中所示。
为了节省天数,您可以转换TimeSpan为Long方法Ticks或对分钟和秒进行求和。
小智 0
要解决该问题,您需要执行以下操作:
您好,您需要创建一个新的 TimeSpan 变量。
//////// Calculation for TimeStamp //////////
DateTime fechaAux = DateTime.Now;
DateTime fechaIngresoAM = new DateTime(fechaAux.Year, fechaAux.Month, fechaAux.Day, 8, 30, 00);
TimeSpan auxIngresoAM = ingresoAM.Subtract(fechaIngresoAM);
TimeSpan resultadoRetrasoIngresoAM = new TimeSpan(auxIngresoAM.Hours, auxIngresoAM.Minutes, auxIngresoAM.Milliseconds);
command.Parameters.Add(new SqlParameter("@retraso_ingreso_am", SqlDbType.Time));
command.Parameters["@retraso_ingreso_am"].Value = resultadoRetrasoIngresoAM;
command.ExecuteNonQuery();
Run Code Online (Sandbox Code Playgroud)
它将按您的预期工作。