Timespan输入字符串的格式不正确

时间:2016-02-24 04:39:22

标签: c# asp.net sql-server-2008-r2

我正在使用SQL server 2008 r2在Asp.Net(Framework 4.0)中建立一个网站。

我的数据库字段名称“RegisterTime”&数据类型是时间(7)。

插入数据库i'hv使用TimeSpan time= DateTime.Now.TimeOfDay;插入成功。

enter image description here

当我尝试使用time作为输入方法检索我的id时,它会给错误输入字符串格式不正确。

代码如下。

 cmd = new SqlCommand("SELECT OrderId  FROM tbl_Orders WHERE UserId ='" + Convert.ToInt32(Session["UserId"].ToString()) + "' And RegisterTime='" + time.ToString(@"hh\:mm\:ss.ff") + "'", con);
 con.Open();
 dr = cmd.ExecuteReader();
 if (dr.HasRows)
 {
    orderid = ""; 
    orderid = dr["OrderId"].ToString();
 }

添加CultureInfo ci = CultureInfo.InvariantCulture;时 给出错误

enter image description here

2 个答案:

答案 0 :(得分:3)

试试这个!

cmd = new SqlCommand("SELECT OrderId  FROM tbl_Orders WHERE UserId ='" + Convert.ToInt32(Session["UserId"].ToString()) + "' And RegisterTime='" + time.ToString(@"hh\:mm\:ss\.ff") + "'", con);

在您的代码中,有一个拼写错误,

time.ToString(@"hh\:mm\:ss.ff") to time.ToString(@"hh\:mm\:ss\.ff")

希望它有所帮助。

答案 1 :(得分:1)

你应该这样试试

CultureInfo ci = CultureInfo.InvariantCulture;
"' And RegisterTime='" + time.ToString("hh:mm:ss.ff",ci) + "'", con);

for .Net 4.0有一个configuration switch来恢复TimeSpan的旧行为。

在.NET 3.5及更早版本中,TimeSpan结构不是IFormattable。当string.Format和相关方法看到{0:something}之类的内容并且提供的参数不是IFormattable时,他们无处可放置该格式字符串,他们只是将其丢弃。