2016-07-09 14 views
0

を形成して、私のEvent_testテーブル内date columnの種類は、このソリューションが正常に動作しないdatetime2私は<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を調整する必要がありますか?

dateTimePicker1dateTimePicker2 のように見えます。彼らは01/10/2016と10/10/2016に設定されており、いつでも私はその日付の間に私の結果を示す日付を変更する!

答えて

0
あなたは本当にSQL-Serverのの形式と一致するようにあなたの日付文字列をフォーマットする必要が

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」に設定されています。日付を変更するたびに、その日付の間に結果が表示されます。 –

関連する問題