使用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();
}
请帮我检查我的代码,并告诉我可能有什么错误或遗漏。
使用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();
}