2012-09-04 42 views
0

我有2个数据访问器对象用于过滤Access查询。当我运行查询时,例如2012年9月1日(startdate)和2012年9月5日(enddate),它给了我一切从12am 9/1/2012到11:59 9/4/2012。通过增加enddate,有什么办法可以包含结束日期的实际日历日?Datepicker对象C的递增日期#

这里是我的代码:

 string startDate = dateTimePicker1.Text; 
     string endDate = dateTimePicker2.Text; 

     OleDbCommand command = new OleDbCommand(); 
     command.Parameters.AddWithValue("@startDate", startDate); 
     command.Parameters.AddWithValue("@endDate", endDate); 
     try { 
      command.Connection = connect; 
      command.CommandText = "SELECT RecordID, TimeStamp, EmployeeName, AreaDescription FROM LoginRecords r, Employees e, Areas a WHERE (e.EmployeeID = r.EmployeeID) AND (a.AreaID = r.AreaID) AND (TimeStamp BETWEEN @startDate AND @endDate) ORDER BY TimeStamp"; 
      OleDbDataReader reader = command.ExecuteReader(); 

      while (reader.Read()) 
      { 
       tw.WriteLine(reader["RecordID"].ToString() + " " + reader["TimeStamp"].ToString() + " " + reader["EmployeeName"].ToString() + " " + reader["AreaDescription"].ToString() + ","); 
       listBox1.Items.Add(reader["RecordID"].ToString() + " " + reader["TimeStamp"].ToString() + " " + reader["EmployeeName"].ToString() + " " + reader["AreaDescription"].ToString() + ","); 
      } 
     } 
     catch (Exception ex){ 
       MessageBox.Show("Error: " + ex.Message); 
     } 

回答

1

您可以通过使用DateTimePickerValue财产得到实际DateTime值。然后你可以使用AddMinutes, AddDays等来增加值。

以下将使用第二天作为结束日期。

DateTime endDate = dateTimePicker2.Value.Date.AddDays(1); 
+0

至于原因,我无法捉摸......这结束了工作。 DateTime endDate = dateTimePicker2.Value; string startDate = dateTimePicker1.Text; – Psyllex

+0

您不应该将DateTime值用作字符串。 sql server可能运行在与应用程序不同的文化中,并且可能无法识别格式化的字符串。同样使用'dateTimePicker.Value'。 –

0

您可以格式化值自定义。使用以下。

dateTimePicker2.Format = DateTimePickerFormat.Custom; 
dateTimePicker2.CustomFormat = "MMMM dd, yyyy - dddd"; 

如果你想使用SQL查询,你最好格式化Date值,就像这样:

CONVERT(varchar(10) ,dateTimePicker2.text,120) 
+0

datepicker1.toString()首先工作得很好。但它只是略过了BETWEEN date1和date2的结束日期。我会在后面尝试着解决它,到底它为什么这样做,但它在确实需要向用户指定指令之前就已经工作了,而我不得不这样做。 – Psyllex

+0

对不起,我不明白你的意思 –

+0

我的意思是,如果我有两个日期startDate和endDate ...它包括startDate一直到endDate前一天。但在将endDate更改为endDate = datepicker.value后;现在它包括endDate就好了。但这是一种非直观的做法。我不想写一些文档来解释你是否希望从日期到日期,并且你必须在一天之后创建日期,以便你可以包含该日期。我希望能更好地解释它。 – Psyllex