【问题标题】:Conversion failed when converting date and/or time from character string When using parameterized query从字符串转换日期和/或时间时转换失败使用参数化查询时
【发布时间】:2017-11-24 12:11:20
【问题描述】:

我目前正在使用报告应用程序。有一个查询,我必须在两个日期之间获取结果。查询如下,

sqlFreeVal = "SELECT FreePro, (SUM(FreeQty) * FreePrice) AS FreeValue, VAT, VATAmount FROM InvoiceDetails INNER JOIN InvoiceHeader ON ";
sqlFreeVal = sqlFreeVal + "InvoiceDetails.CompanyCode = InvoiceHeader.CompanyCode AND InvoiceDetails.StockiestID = InvoiceHeader.StockiestID AND ";
sqlFreeVal = sqlFreeVal + "InvoiceDetails.DailySalesID = InvoiceHeader.DailySalesID AND InvoiceDetails.RepID = InvoiceHeader.RepID AND InvoiceDetails.InvID = InvoiceHeader.InvID ";
sqlFreeVal = sqlFreeVal + "WHERE InvoiceDetails.StockiestID = '" + StockistID + "' AND FreeQty > 0 ";
sqlFreeVal = sqlFreeVal + "AND InvoiceHeader.SalesDate BETWEEN @date1 AND @date2 ";//InvoiceHeader.SalesDate <= '" + toDT + "' ";
sqlFreeVal = sqlFreeVal + "GROUP BY FreePrice, FreePro, VAT, VATAmount ";

然后我使用下面的代码执行它,

SqlCommand queryFree = new SqlCommand(sqlFreeVal, myConnection);
queryFree.Parameters.AddWithValue("@date1", fromDT);
queryFree.Parameters.AddWithValue("@date2", toDT);
SqlDataAdapter adpFree = new SqlDataAdapter(queryFree);
adpFree.Fill(freeTbl);

当我运行它时,它给了我“从字符串转换日期和/或时间时转换失败”。错误。 我的表具有“日期时间”数据类型。

请帮忙!。谢谢。

【问题讨论】:

  • 该查询 isn't 已正确参数化 - 您仍在将 StockistID 连接到查询中 - 立即停止这样做

标签: c# sql


【解决方案1】:

看起来 fromDT 和 toDT 是字符串。只需在发送前将它们解析为 DateTime 结构即可。

queryFree.Parameters.AddWithValue("@date1", DateTime.Parse(fromDT)); queryFree.Parameters.AddWithValue("@date2", DateTime.Parse(toDT));

如果您的字符串中存在格式问题,则会抛出 FormatException。从那里,您可以诊断问题。

【讨论】:

猜你喜欢
  • 2012-04-17
  • 2017-12-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多