2016-07-09 5 views
0

Я пытаюсь сортировать мои данные базы данных в datagridview с помощью DateTimePicker управления, тип date column в моей Event_test таблице datetime2Как выбрать Datetime2 из Windows Forms 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, и всякий раз, когда я меняю даты, это показывает мне результаты между этими датами !! –

Смежные вопросы