Не работает оператор 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();
}
→ Ссылка