时间数据类型 SQL Server 2008 和 C#




我有一个文本框(asp:textbox)。我正在使用C#.NET和SQL Server 2008 R2作为数据库。我在尝试输入时间时遇到问题。即 08:00、14:00 等。
单击"提交"后,它应该存储到表中。但是错误。错误是"字符串未被识别为有效的时间跨度"。字段名称是"您的时间",数据类型为 time(7)。

我正在使用sqlcommand将其存储到表中。

cmd.Parameters.Add("@YourTime", SqlDbType.Time, 7).Value = txtYourTime.Text;

有人可以帮忙吗?
非常感谢。


干杯

最好的方法是使用 TimeSpan.TryParse 将文本(字符串)值从 txtYourTime.Text 转换为TimeSpan

传递反映用户的CultureInfo(对于 IFormatProvider 参数)(不同的区域性使用不同的格式)。这可确保您控制这些参数,而不是反映服务器设置而不是用户意图的默认值。

编辑:根据要求采样:

var ci = CultureInfo.GetCultureInfo(Request.UserLanguages[0]);
TimeSpan ts;
if (TimeSpan.TryParse(txtYourTime.Text, ci, out ts)) {
  cmd.Parameters.Add("@YourTime", SqlDbType.Time).Value = ts;
} else {
  // Report invalid input to user.
}
您应该将

字符串转换为有效的TimeSpan,如下所示:

myTime = TimeSpan.Parse(txtYourTime.Text);
cmd.Parameters.Add("@YourTime", SqlDbType.Time, 7).Value = myTime;

最新更新