使用datetimepicker设置日期范围来选择sql数据库数据

本文关键字:选择 sql 数据库 数据 范围 datetimepicker 设置 日期 使用 | 更新日期: 2023-09-27 18:13:02

我正在尝试制作c#程序,在那里我必须在datagridview中预览数据库报告。将使用日期时间选择器选择数据。我写的代码,它的工作原理,但如果选择的日期是不同的月份。没有记录出现

void FilterDBbtnClick(object sender, EventArgs e)
{
        MySqlConnection conn = new MySqlConnection();
    
        conn = new MySqlConnection(cs);
        
        string data = "SELECT `Date`, `Process`, `Actual`, `Target` FROM `database` WHERE `Date` BETWEEN '"+this.fromDatePicker.Value+"' AND  '"+this.toDatePicker.Value+"' order by `Date` desc";
        
        MySqlCommand cmd = new MySqlCommand(data, conn);
        
        
        cmd.Connection.Open();
            
        try
        {
            
          MySqlDataAdapter sda = new MySqlDataAdapter();
          sda.SelectCommand = cmd;          
          DataSet dt = new DataSet();
          sda.Fill(dt);
          BindingSource bsource = new BindingSource();
          bsource.DataSource = dt;
          mondeDataTable.DataSource = dt.Tables[0];
          sda.Update(dt);
        
        }
        
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
        }
        
        
        cmd.Connection.Close();
}

请帮我检查我的代码,并告诉我可能有什么错误或遗漏。

使用datetimepicker设置日期范围来选择sql数据库数据

使用profiler检查命中DB的查询。我怀疑是日期格式的问题。

也许这个问题可以帮助您记录命中数据库的查询:

希望对您有所帮助:

Select * from [Table] where StartDate between '06/13/2016' and '10/13/2016'

上面的查询获取月份06到10之间的记录。确保data variable中的字符串是上述格式。此外,数据库中的列类型为date

检查并删除特殊字符,如果有的话。

在选择查询中尝试这样做。我已经更改了一个选择变量,因为它对日期数据类型有歧义。

void FilterDBbtnClick(object sender, EventArgs e)
{
        MySqlConnection conn = new MySqlConnection();
        conn = new MySqlConnection(cs);

        //string data = "SELECT `Date`, `Process`, `Actual`, `Target` FROM `database` WHERE `Date` BETWEEN '"+this.fromDatePicker.Value+"' AND  '"+this.toDatePicker.Value+"' order by `Date` desc";
        //Changed query for getting data from DB according to the date 
        string data = "SELECT CreatedDate, Process, Actual, Target FROM database WHERE DATE_FORMAT(CreatedDate,'%Y-%m-%d') BETWEEN '"+this.fromDatePicker.Value.ToString("yyyy-MM-dd")+"' AND  '"+this.toDatePicker.Value.ToString("yyyy-MM-dd")+"' order by CreatedDate desc";

        MySqlCommand cmd = new MySqlCommand(data, conn);

        cmd.Connection.Open();
        try
        {
        MySqlDataAdapter sda = new MySqlDataAdapter();
        sda.SelectCommand = cmd;            
        DataSet dt = new DataSet();
        sda.Fill(dt);
        BindingSource bsource = new BindingSource();
        bsource.DataSource = dt;
        mondeDataTable.DataSource = dt.Tables[0];
        sda.Update(dt);
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
        }

        cmd.Connection.Close();
}