SqlDbType.Time溢出。价值超出范围

时间:2015-10-03 06:33:58

标签: sql sql-server sql-server-2008 c#-4.0 c#-3.0

我想在表中存储时间,并以foreach( $array as &$value ) { if( strpos($value, ':' ) ) { return; } } 作为数据类型来存储时间。当我减去两个time(7)时,我的DateTime变量得到了"1.18:36:36.7484253"。但问题是,当我在表中插入此值时,我收到此错误:

  

TimeSpan溢出。SqlDbType.Time超出范围。必须介于'1.18:36:36.7484253'00:00:00.0000000之间。

我知道这个错误,我的问题是我可以使用的数据类型。我正在使用SQL Server 2008和C#。

2 个答案:

答案 0 :(得分:1)

SQL Server存储没有天数的时间。有效范围应在00:00:00.000000023:59:59.9999999之间,如邮件中所示。

对于保存日期,您可以将TimeSpan转换为Long至方法Ticks,或者将分钟和秒数相加。

答案 1 :(得分:0)

要解决该问题,您需要执行以下操作:

HI,您需要创建一个新的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();

它会按预期工作。