簡體   English   中英

從Winforms中的字符串轉換日期和/或時間時轉換失敗

[英]Conversion failed when converting date and/or time from character string in winforms

這是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();

存儲過程如下:

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

我收到此錯誤,從字符串轉換日期和/或時間時轉換失敗

它不是Winforms,而是SQL錯誤

“ @ date1”和“ @ date2”不是日期,而是字符串

在存儲過程中刪除“

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

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

您需要將@date1@date2作為Date類型傳遞給該過程,因為該過程接受2個類型為Date參數。

因此,您可以在代碼中進行如下更改:

    cmd.Parameters.Add("@date1", dateTimePicker3.Value.Date);
    cmd.Parameters.Add("@date2", dateTimePicker4.Value.Date);

嘗試一下,讓我們知道您是否還有其他問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM