有人可以帮我弄清楚为什么我收到此错误吗?我在我的电脑上有相同的代码,它工作正常,但在我的朋友的笔记本电脑上它不会工作。我们有相同的SQL Server日期时间格式。我已经尝试将字符串日期格式转换为与SQL Server日期格式相同,但它仍然不起作用。将nvarchar数据类型转换为日期时间数据类型导致超出范围值.3
编辑:我不好,我发布了错误的代码。
DateTime paymentCashDate = Convert.ToDateTime(txtPaymentCash.Text).AddDays(1).AddSeconds(-1);
DateTime orderDate = Convert.ToDateTime(lblDate.Text);
if (orderDate < paymentCashDate)
{
cmd.CommandText = "UPDATE Orders SET [email protected], [email protected], [email protected], [email protected] WHERE [email protected] AND Status='Pending'; " +
"UPDATE OrderDetails SET [email protected] WHERE [email protected] AND Status='Pending';";
cmd.Parameters.AddWithValue("@Status", "Approved");
cmd.Parameters.AddWithValue("@PaymentStatus", "Payment Accepted");
cmd.Parameters.AddWithValue("@PaymentDate", paymentCashDate.ToString());
cmd.Parameters.AddWithValue("@PaymentAmount", txtAmountCash.Text);
cmd.Parameters.AddWithValue("@OrderNo", orderNo);
cmd.ExecuteNonQuery();
con.Close();
addProject(orderNo);
Response.Redirect("Default.aspx");
}
else
{
errorPayment.Visible = true;
}
如果它是DB中的日期时间,为什么要传递'string'?另外,为什么要将'DateTime'对象格式化为字符串来进行比较,尤其是因为您没有使用24小时的时间? – juharr
你应该看看[我们可以停止使用AddWithValue()了吗?](http://blogs.msmvps.com/jcoehoorn/blog/2014/05/12/can-we-stop-using-addwithvalue-already/)并停止使用'.AddWithValue()' - 它可能会导致意想不到的和令人惊讶的结果... –
可能有情况下,您传递无效日期,如'2017-06-31',这也会导致同样的错误,同时转换到datetime。 –