3

在我的窗口应用程序中,我想显示两个日期之间的记录。我使用 datepicker 来选择日期。在 sql server 2008 表中,我使用数据类型 [date] 来存储日期。我的问题是捕获第一个日期无法正常工作,它捕获了我选择的下一个日期。我使用了以下代码:

cmd5.Parameters.AddWithValue("date1", dateTimePicker4.Value);
cmd5.Parameters.AddWithValue("date2", dateTimePicker5.Value);

在此处输入图像描述

当我尝试这个时:

cmd5.Parameters.AddWithValue("date1", dateTimePicker4.Value.AddDays(-1));
cmd5.Parameters.AddWithValue("date2", dateTimePicker5.Value);

结果-

在此处输入图像描述

我的完整代码

cmd10 = new SqlCommand("select a_id,commtyp,convert(varchar(10),date,105),comm,primm,c_id,agent from comm where a_id= '" + textBox1.Text + "' AND  date >= @date1  AND date <=  @date2 ", agr);
            cmd10.Parameters.AddWithValue("@date1", dateTimePicker1.Value.AddDays(-1));
            cmd10.Parameters.AddWithValue("@date2", dateTimePicker2.Value);
            adp = new SqlDataAdapter(cmd10);
            DataSet ds = new DataSet();
            adp.Fill(ds, "comm");
            dataGridView1.DataSource = ds;
            dataGridView1.DataMember = "comm";                
            checkBox2.Checked = false;
            groupBox15.Show();
            cmd10.Parameters.Clear();
4

2 回答 2

1

您正在使用 datepicker 的 value 属性,它为您提供秒和毫秒的日期。您必须从它的值中获取实际的日期部分。

尝试这个

dateTimePicker4.Value.Date

代替

dateTimePicker4.Value
于 2013-10-04T06:51:21.583 回答
0

您正在使用日期时间选择器,并且在查询中,您可能正在使用从日期和到日期作为日期时间。

请将 @from 和 @to 日期时间转换为日期为

  cast(@From as date)
  cast(@To as date)

然后放入条件,它可能会解决你的问题..

于 2013-10-04T06:10:04.507 回答