我的表格中有一列数据类型datetime
,我想将一个文本框中的日期值插入到表格中,但我收到此错误:
将varchar数据类型转换为日期时间数据类型会导致超出范围的值
这是我的代码:
string prfer_date = txtDT_Particip.Text;
int userId = 0;
string constr = ConfigurationManager.ConnectionStrings["mycon"].ConnectionString;
using (SqlConnection con = new SqlConnection(constr))
{
using (SqlCommand cmd = new SqlCommand("Insert_User"))
{
using (SqlDataAdapter sda = new SqlDataAdapter())
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@FullName", txtFName.Text.Trim());
cmd.Parameters.AddWithValue("@PreferredDateStart", prfer_date.ToString());
}
}
}
在prfer_date
失败了。谢谢你的帮助
答案 0 :(得分:0)
我在你的问题中遗漏的一件事是prefer_date
是字符串类型。 AddwithValue
从字段类型推断出类型,因此在SQL结束时它会将其视为nvarchar
,因此会将错误视为cmd.Parameters.Add(new SqlParameter("@PreferredDateStart", SqlDbType.DateTime)
{ Value = prefer_date });
。你需要的是:
AddWithValue
或者您可以将字符串解析为DateTime对象,然后使用cmd.Parameters.AddWithValue("@PreferredDateStart",DateTime.Parse(prefer_date));
,如:
prefer_date
考虑DateTime.Parse
包含{{1}}可以成功解析的值。
答案 1 :(得分:0)
SQL Datetime的范围是" 1753年1月1日到9999年12月31日"
如果你在SQL中做这样的事情:
select convert(datetime, '1665-01-01 00:00:00')
然后你得到错误:
将varchar数据类型转换为日期时间数据类型会导致超出范围的值。