【问题标题】:Exception datetime in SQLSQL中的异常日期时间
【发布时间】:2017-09-22 12:54:49
【问题描述】:

将 nvarchar 数据类型转换为 datetime 数据类型 导致超出范围的值。

我的代码:

 string sqlthem = "INSERT INTO Infosp1 VALUES (@khach,@sp,@sl,@gia,@tg)";
        string sqlconvert = "select CONVERT(varchar(20),[Tg], 103) from Infosp1";
        SqlCommand cmd = new SqlCommand(sqlthem, con);
        cmd.Parameters.AddWithValue("Khach", cbbtenkh.Text);
        cmd.Parameters.AddWithValue("Sp", cbbmahang.Text);
        cmd.Parameters.AddWithValue("Sl", cbbsl.Text);
        cmd.Parameters.AddWithValue("Gia", cbbgia.Text);
        cmd.Parameters.AddWithValue("Tg", datetg.Text);           
        cmd.ExecuteNonQuery();

它出现在.ExecuteNonQuery()

【问题讨论】:

  • 您确实应该确保参数的类型与数据库中列的类型相匹配,为此您应该首先在代码中将string 值解析为DateTime。也可以考虑not using AddWithValue
  • 你能显示在datetg变量中传递的示例值吗?
  • 不应该像cmd.Parameters.AddWithValue("@Khach", cbbtenkh.Text);
  • @NikhilAgrawal 不,如果你不这样做,它会添加@。
  • 不,您需要执行类似cmd.Parameters.Add("Tg", SqlDbType.DateTime).Value = DateTime.Parse(datetg.Text); 的操作。如果 Parse 失败,则使用 ParseExact 输入任何日期格式。

标签: c# sql date exception


【解决方案1】:

如果您有日期时间字段,则需要将参数转换为日期时间。如果你想让它执行转换,它不会工作,因为你没有执行这个查询:

string sqlconvert = "select CONVERT(varchar(20),[Tg], 103) from Infosp1";

您尝试插入未转换的字符串,因此可能格式不正确。

cmd.Parameters.AddWithValue("Tg", datetg.Text);

尝试创建定义其数据类型的 sql 参数,如下所示:

cmd.Parameters.Add("Tg", SqlDbType.DateTime).Value = Convert.ToDateTime(datetg.Text);

理想情况下,您应该在某个地方使用 CultureInfo 来进行解析

...或者在sql脚本中调用转换,像这样:

string sqlthem = @"declare @dt datetime
    select @dt = CONVERT(varchar(20), @tg, 103)
    INSERT INTO Infosp1 VALUES (@khach,@sp,@sl,@gia,@dt)";

【讨论】:

  • 感谢您的详细解释。我试过了,出现了这个异常:Additional information: The conversion of a varchar data type to a datetime data type resulted in an out-of-range value.
  • 尝试使用 DateTime tg; TryParse(datetg.Text, tg out); cmd.Parameters.Add("Tg", SqlDbType.DateTime).Value = tg;
  • 您需要检查哪些值被 parse 拒绝(如果失败,TryParse 应该返回 false)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-09-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-02
相关资源
最近更新 更多