我有一个意大利语格式的日期时间字符串,如下所示:
23/03/2012
此更新的sql命令是在datetime部分:
DateTime.ParseExact(Reg_tes.Text, "dd/MM/yyyy", CultureInfo.InvariantCulture)
这适用于我的Sql服务器(意大利语),但如果我在我的服务器(英语)上这样做会给我这个错误:
“将varchar数据类型转换为日期时间数据类型 导致超出范围的值“
我该如何解决这个问题?
答案 0 :(得分:1)
您应该始终使用参数化查询来防止像这样的sql注入和本地化问题。
所以我假设您将此日期时间作为字符串传递给数据库。
using(var con = new SqlConnection("connection-string"))
using(var cmd = new SqlCommand("UPDATE dbo.TableName SET DateColumn=@DateColumn WHERE PK=@PK", con))
{
DateTime reg_tes = DateTime.ParseExact(Reg_tes.Text, "dd/MM/yyyy", CultureInfo.InvariantCulture);
cmd.Parameters.AddWithvalue("@DateColumn", reg_tes);
// other parameters ...
con.Open();
int affected = cmd.executeNonQuery();
}