从字符串转换日期和/或时间时,c#转换失败

本文关键字:转换 时间 失败 字符串 日期 | 更新日期: 2023-09-27 18:16:48

我在谷歌上搜索了几个小时,这些问题都不适用于我的情况,所以希望你们能帮助我。我有一个报告应用程序,用户可以从DateTimePicker中选择一个日期,并显示具有最大数量值的项目。我使用报表查看器控件来显示信息。

下面是我的表适配器中的SQL查询:
SELECT TOP (1) 
   Drink_Name, 
   SUM(Quantity) AS NoDrink, 
   Bill_No, 
   Staff_No, 
   Bill_Date, 
   Bill_Value, 
   Customer_No, 
   Unit_Price, 
   Quantity
FROM            
   (SELECT        
        Bill.Bill_No,
        Bill.Staff_No, 
        Bill.Bill_Date, 
        Bill.Bill_Value, 
        Bill.Customer_No, 
        Bill_Detail.Drink_Name, 
        Bill_Detail.Bill_No AS Expr1, 
        Bill_Detail.Unit_Price, 
        Bill_Detail.Quantity
    FROM 
        Bill INNER JOIN
         Bill_Detail ON Bill.Bill_No = Bill_Detail.Bill_No
    WHERE        
        (Bill.Bill_Date = @Bill_Date)
   ) AS Temp
   GROUP BY Drink_Name, 
        Bill_No, 
        Staff_No, 
        Bill_Date, 
        Bill_Value, 
        Customer_No, 
        Unit_Price, 
        Quantity
ORDER BY NoDrink DESC

下面是生成和加载数据到报表数据集的代码

CoffeeShopDataSetTableAdapters.DataTable1TableAdapter adapter = 
    new CoffeeShopDataSetTableAdapters.DataTable1TableAdapter();
CoffeeShopDataSet.DataTable1DataTable table = 
    new CoffeeShopDataSet.DataTable1DataTable();
adapter.FillByMax(table, dateTimePicker1.Value.ToShortDateString());
ReportDataSource maxdatasource = 
    new ReportDataSource("DataSet1form3", (DataTable)table);
this.reportViewer1.LocalReport.DataSources.Clear();
this.reportViewer1.LocalReport.DataSources.Add(maxdatasource);
this.reportViewer1.LocalReport.Refresh();
this.reportViewer1.RefreshReport();

问题是我总是得到这个错误:

"类型为'System.Data.SqlClient. sql '的未处理异常。SqlException' occurred in System.Data.dll

附加信息:从字符串转换日期和/或时间时,转换失败。"

当我尝试SQL查询与SQL服务器管理2008,它工作得很好,所以我认为这是VS问题。提前感谢大家。不好意思,英文不好

从字符串转换日期和/或时间时,c#转换失败

我将明确表示您的日期,这样就不会在日期和时间格式之间产生混淆。

1)更改将日期转换为具有显式格式的字符串的行

dateTimePicker1.Value.ToString("yyyyMMdd");

2)修改SQL(假设Bill。Bill_Date列是一个日期

(Bill.Bill_Date = CONVERT(DATE, @Bill_Date, 112)