转换时间格式00:44:50到(' 00:44:50.240000')

时间:2012-08-20 20:15:23

标签: c# sql sql-server

            string val;
            val = Request.Form["timerData"].ToString();            
            TimeSpan ts = TimeSpan.FromMilliseconds(Convert.ToInt32(val.ToString()));
            lbTime.Text = ts.ToString();
  • 这里lbTime.Text以00:44:50格式返回时间值。

  • 在我的Sql数据库中,我使用Time(7)数据类型作为时间及其
    默认值为('00:00:00.0000000')

  • 我想将此格式转换为00:44:50到('00:44:50.240000')并使用更新语句在数据库中输入。

以上时间用于示例目的

请帮助我。

4 个答案:

答案 0 :(得分:1)

如果您的更新语句是参数化,或者您使用存储过程passing a TimeSpan to a time(7) column should work perfectly fine。像这样:

public static void UpdateTimestamp( int id , TimeSpan ts )
{
  using ( SqlConnection connection = new SqlConnection( "some-connect-string" ) )
  using ( SqlCommand    command    = connection.CreateCommand() )
  {
    command.CommandText = "update foo set duration = @duration where id = @id" ;

    command.Parameters.AddWithValue( "@id"       , id ) ;
    command.Parameters.AddWithValue( "@duration" , ts ) ;

    connection.Open() ;
    int rowsAffected = command.ExecuteNonQuery() ;
    connection.Close() ;

    if ( rowsAffected == 0 ) throw new InvalidOperationException( "That didn't work B^(" ) ;
    if ( rowsAffected >  0 ) throw new InvalidOperationException( "That shouldn't have happend B^(" ) ;

  }

  return ;

}

答案 1 :(得分:0)

尝试以下方法之一:

DateTime date1 = new DateTime(2008, 8, 29, 19, 27, 15, 18);
CultureInfo ci = CultureInfo.InvariantCulture;

Console.WriteLine(date1.ToString("hh:mm:ss.f", ci));
// Displays 07:27:15.0
Console.WriteLine(date1.ToString("hh:mm:ss.F", ci));
// Displays 07:27:15
Console.WriteLine(date1.ToString("hh:mm:ss.ff", ci));
// Displays 07:27:15.01
Console.WriteLine(date1.ToString("hh:mm:ss.FF", ci));
// Displays 07:27:15.01
Console.WriteLine(date1.ToString("hh:mm:ss.fff", ci));
// Displays 07:27:15.018
Console.WriteLine(date1.ToString("hh:mm:ss.FFF", ci));
// Displays 07:27:15.018

您甚至可以使用更多'FFFFF'来表示秒数分数的最高最高位数。

取自:http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx

有帮助吗?

答案 2 :(得分:0)

在你的最后一个表达中,你说

ts.ToString()

如果并非所有数字都为零,则此重载仅显示小数秒。您可能希望使用自定义格式字符串,如

ts.ToString(@"hh\:mm\:ss\.fffffff")

代替。这应该适用于.NET 4.5和4.0。请参阅MSDN: Custom TimeSpan Format Strings

答案 3 :(得分:0)

我使用相同的代码只是错误是我在将值传递给int之前将值转换为int

string val;
            val = Request.Form["timerData"].ToString();            
            TimeSpan ts = TimeSpan.FromMilliseconds(Convert.ToDouble(val.ToString()));
            lbTime.Text = ts.ToString();

<强>解决