将 nvarchar 数据类型转换为 datetime 数据类型导致值超出范围。3
The conversion of a nvarchar data type to a datetime data type resulted in an out-of-range value.3
谁能帮我弄清楚为什么会出现此错误?我的 PC 上有相同的代码并且运行良好,但在我朋友的笔记本电脑上却无法运行。我们有相同的 SQL 服务器日期时间格式。我已经尝试将字符串日期格式转换为与 SQL 服务器日期格式相同的格式,但它仍然不起作用。
编辑:糟糕,我发布了错误的代码。
DateTime paymentCashDate = Convert.ToDateTime(txtPaymentCash.Text).AddDays(1).AddSeconds(-1);
DateTime orderDate = Convert.ToDateTime(lblDate.Text);
if (orderDate < paymentCashDate)
{
cmd.CommandText = "UPDATE Orders SET PaymentStatus=@PaymentStatus, Status=@Status, PaymentAmount=@PaymentAmount, PaymentDate=@PaymentDate WHERE OrderNo=@OrderNo AND Status='Pending'; " +
"UPDATE OrderDetails SET Status=@Status WHERE OrderNo=@OrderNo 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;
}
您正在尝试将 string
(nvarchar
) 更新为日期时间列。
变化:
cmd.Parameters.AddWithValue("@PaymentDate", paymentCashDate.ToString());
收件人:
cmd.Parameters.AddWithValue("@PaymentDate", paymentCashDate);
另一件事,我看到你正在使用 TextBox
控件来保存日期(没问题,因为你将文本转换为 DateTime
),但我建议你使用 DateTimePicker
控制,它将节省转换的需要,用户将有更好的用户体验。
谁能帮我弄清楚为什么会出现此错误?我的 PC 上有相同的代码并且运行良好,但在我朋友的笔记本电脑上却无法运行。我们有相同的 SQL 服务器日期时间格式。我已经尝试将字符串日期格式转换为与 SQL 服务器日期格式相同的格式,但它仍然不起作用。
编辑:糟糕,我发布了错误的代码。
DateTime paymentCashDate = Convert.ToDateTime(txtPaymentCash.Text).AddDays(1).AddSeconds(-1);
DateTime orderDate = Convert.ToDateTime(lblDate.Text);
if (orderDate < paymentCashDate)
{
cmd.CommandText = "UPDATE Orders SET PaymentStatus=@PaymentStatus, Status=@Status, PaymentAmount=@PaymentAmount, PaymentDate=@PaymentDate WHERE OrderNo=@OrderNo AND Status='Pending'; " +
"UPDATE OrderDetails SET Status=@Status WHERE OrderNo=@OrderNo 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;
}
您正在尝试将 string
(nvarchar
) 更新为日期时间列。
变化:
cmd.Parameters.AddWithValue("@PaymentDate", paymentCashDate.ToString());
收件人:
cmd.Parameters.AddWithValue("@PaymentDate", paymentCashDate);
另一件事,我看到你正在使用 TextBox
控件来保存日期(没问题,因为你将文本转换为 DateTime
),但我建议你使用 DateTimePicker
控制,它将节省转换的需要,用户将有更好的用户体验。