Не работает оператор between с датами T-SQL
Столкнулся со следующей проблемой. Мне нужно вывести в datagridview все платежи с одной даты до другой (видно на скриншоте). В базе имеется один платеж с датой 30.05.2020 и он выводится в DGV только когда в обоих dateTimePicker стоит эта дата, во всех остальных случаях он остается пустым. Может кто-нибудь объяснить в чем проблема и помочь поправить запрос чтобы все работало?
Поле BillDate в таблице имеет тип date.
private void btnViewBills_Click(object sender, EventArgs e)
{
DateTime fromDate = DateTime.Parse(dtpFromDate.Text);
DateTime toDate = DateTime.Parse(dtpToDate.Text);
con.Open();
dt = new DataTable();
adapt = new SqlDataAdapter("select * from BillInfo where BillDate between '" + fromDate + "' and '" + toDate + "'", con);
adapt.Fill(dt);
billInfoDataGridView.DataSource = dt;
con.Close();
}
Ответы (1 шт):
Автор решения: Aziz Umarov
→ Ссылка
Попробуйте так
private void btnViewBills_Click(object sender, EventArgs e)
{
DateTime fromDate = DateTime.Parse(dtpFromDate.Text);
DateTime toDate = DateTime.Parse(dtpToDate.Text);
con.Open();
dt = new DataTable();
String sqlExpression = "select * from BillInfo where BillDate between @fromDate and @toDate";
SqlCommand command = new SqlCommand(sqlExpression);
SqlParameter fromParam = new SqlParameter("@fromDate", fromDate);
command.Parameters.Add(fromParam);
SqlParameter toParam = new SqlParameter("@toDate", toDate);
command.Parameters.Add(toParam);
adapt = new SqlDataAdapter(command, con);
adapt.Fill(dt);
billInfoDataGridView.DataSource = dt;
con.Close();
}
