[英]Conversion failed when converting date and/or time from character string in winforms
This is the Winforms C# code: 这是Winforms C#代码:
dateTimePicker3.Format = DateTimePickerFormat.Custom;
dateTimePicker3.CustomFormat = "dd-MM-yyyy";
dateTimePicker4.Format = DateTimePickerFormat.Custom;
dateTimePicker4.CustomFormat = "dd-MM-yyyy";
string connectionstring = @"Data Source=.;Initial Catalog=ExpenseManagerDB;Integrated Security=True";
SqlConnection sqlconn = new SqlConnection(connectionstring);
sqlconn.Open();
string query = @"sp_Total";
SqlCommand cmd = new SqlCommand(query, sqlconn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@date1", dateTimePicker3.Value);
cmd.Parameters.Add("@date2", dateTimePicker4.Value);
SqlDataAdapter sda = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
Stored procedure follows: 存储过程如下:
Alter PROCEDURE sp_Total @date1 date,@date2 date
AS
BEGIN
Select SUM(Price) from EntryDetails where Name = 'Sreejith' and Date between '@date1' and '@date2'
Select SUM(Price) from EntryDetails where Name = 'Siva' and Date between '@date1' and '@date2'
Select SUM(Price) from EntryDetails where Name = 'Pavithran' and Date between '@date1' and '@date2'
Select SUM(Price) from EntryDetails where Name = 'Nithin' and Date between '@date1' and '@date2'
END
GO
I'm getting this error Conversion failed when converting date and/or time from character string 我收到此错误,从字符串转换日期和/或时间时转换失败
it is not winforms, it is sql error 它不是Winforms,而是SQL错误
'@date1' and '@date2' are not dates but strings “ @ date1”和“ @ date2”不是日期,而是字符串
remove '' in stored procedure 在存储过程中删除“
Alter PROCEDURE sp_Total @date1 date,@date2 date
AS
BEGIN
Select SUM(Price) from EntryDetails where Name = 'Sreejith' and Date between @date1 and @date2
Select SUM(Price) from EntryDetails where Name = 'Siva' and Date between @date1 and @date2
Select SUM(Price) from EntryDetails where Name = 'Pavithran' and Date between @date1 and @date2
Select SUM(Price) from EntryDetails where Name = 'Nithin' and Date between @date1 and @date2
END
UPDATE UPDATE
Alter PROCEDURE sp_Total @date1 date, @date2 date
AS
BEGIN
Select Name, SUM(Price) as SumPrice
from EntryDetails
where
(Date between @date1 and @date2)
and Name in ('Sreejith','Siva','Pavithran','Nithin')
group by Name
END
You need to pass @date1
and @date2
as Date
types to the procedure, because the procedure takes in 2 params of type Date
. 您需要将
@date1
和@date2
作为Date
类型传递给该过程,因为该过程接受2个类型为Date
参数。
Hence in your code, you can change something as below: 因此,您可以在代码中进行如下更改:
cmd.Parameters.Add("@date1", dateTimePicker3.Value.Date);
cmd.Parameters.Add("@date2", dateTimePicker4.Value.Date);
Try it, let us know if you face any further problems. 尝试一下,让我们知道您是否还有其他问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.