2013-10-04 46 views
4

在我的窗口應用程序中,我想顯示兩個日期之間的記錄。我用datepicker來選擇日期。在sql server 2008表中,我使用數據類型[日期]來存儲日期。我的問題是,它不能正確地捕捉第一個日期,它捕捉到我選擇的下一個日期。我用下面的代碼:如何從c#中特定日期的sql server 2008表訪問數據?

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

enter image description here

,當我試試這個:

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

Result-

enter image description here

我的完整代碼

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(); 
+2

+1使用的參數 –

+2

請更新您的文章,以顯示您的實際查詢與和明確的替代'dateTimePicker5.Value'(及其他) '新的DateTime(2012年,07年,19日)'所以很清楚什麼樣的價值和你的期望。 –

+0

這可能是因爲有時間組件附加到日期並且您的數據庫沒有時間。 – Szymon

回答

0

你正在採取日期時間選擇器,並在查詢中可能是你從日期時間和日期時間。

恣轉換@from和@至日期時間到日期

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

再投入條件下,它可能會解決你的問題..

+0

請編輯我的聲明我無法做到這一點。 –

1

您使用的日期選擇value屬性,它給你以秒和毫秒爲單位進行約會。你必須從它的價值中獲得實際的日期部分。

試試這個

dateTimePicker4.Value.Date 

代替

dateTimePicker4.Value