0

我有一个这样的意大利语格式的日期时间字符串:

23/03/2012

此更新的 sql 命令在 datetime 部分是这样的:

DateTime.ParseExact(Reg_tes.Text, "dd/MM/yyyy", CultureInfo.InvariantCulture)

这适用于我的 Sql 服务器(意大利语),但如果我在我的服务器上进行此操作(英语)会给我这个错误:

“将 varchar 数据类型转换为 datetime 数据类型导致值超出范围”

我该如何解决这个问题?

4

1 回答 1

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();
}
于 2013-10-30T11:29:35.830 回答