2016-07-09 2 views
0

내 데이터베이스 데이터 정렬 노력하고 형성에서 DATETIME2를 선택하는 방법, 내 Event_test 테이블에 date column의 유형이 datetime2Windows가 <code>DateTimePicker</code> 컨트롤을 사용하여 <code>datagridview</code>에있는 DateTimePicker

SqlDataAdapter sda = new SqlDataAdapter("SELECT * from Event_test where date between '" 
        +dateTimePicker1.Value.ToString()+"' AND'"+dateTimePicker2.Value.ToString()+ "'", con); 
      DataTable data = new DataTable(); 
      sda.Fill(data); 
      dataGridView1.DataSource = data; 

이 솔루션은 제대로 작동하지 않습니다, 그것은 처음에 잘못 데이터를 정렬하고 난 시간 선택기를 변경하면이 오류가 발생합니다 문자 문자열에서 날짜 및/또는 시간을 변환 할 때

변환 실패

도움을 주시면 감사하겠습니다.

그래서 내가 필요한 것을 얻기 위해 select statement을 어떻게 조정해야합니까?

모양이 dateTimePicker1이고 dateTimePicker2 는 둘 다 변하지 않습니다. 그들은 01/10/2016 및 10/10/2016으로 설정되며 언제든지 그 날짜 사이에 결과를 보여줍니다!

답변

0
당신은 정말 SQL-서버의 형식에 맞게 날짜 문자열을 포맷해야

:

string sqlFormat = "yyyy-MM-dd HH:mm:ss.fff"; 

String query = "SELECT * from Event_test where date between '" 
      + dateTimePicker1.Value.ToString(sqlFormat) + "' AND'" 
      + dateTimePicker2.Value.ToString(sqlFormat) + "'"; 

더 나은 옵션이는 SQL 매개 변수를 사용하는 것입니다 (쿼리 문자열 연결을 피하려고) :

var sda = new SqlDataAdapter("SELECT * from Event_test where [date] between @p1 AND @p2", con); 

SqlParameter dateParamFrom = new SqlParameter("@p1", SqlDbType.DateTime2); 
dateParamFrom.Value = dateTimePicker1.Value; 
SqlParameter dateParamTo = new SqlParameter("@p2", SqlDbType.DateTime2); 
dateParamTo.Value = dateTimePicker2.Value; 

sda.SelectCommand.Parameters.Add(dateParamFrom); 
sda.SelectCommand.Parameters.Add(dateParamTo); 
+0

이 솔루션을 시도했지만 항상 잘못된 결과를 보여줍니다. ( –

+0

@AhmedAekbj가 질문을 업데이트하고 샘플 날짜와 시간, 예상 출력 및 잘못된 출력을 보여줍니다. – user3185569

+0

'dateTimePicker1' 및' dateTimePicker2 '둘 다 변경할 수 없다. 그들은 '01/10/2016'과 '10/10/2016'으로 설정되어 있으며 날짜를 변경할 때마다 그 날짜 사이에 결과가 표시됩니다 !! –

관련 문제