我正在使用SQL server 2008 r2在Asp.Net(Framework 4.0)中建立一个网站。
我的数据库字段名称“RegisterTime”&数据类型是时间(7)。
插入数据库i'hv使用TimeSpan time= DateTime.Now.TimeOfDay;
插入成功。
当我尝试使用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;
时
给出错误
答案 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
时,他们无处可放置该格式字符串,他们只是将其丢弃。