Как точно выбрать между двумя значениями даты?
Привет. Я хочу создать поиск для моих дат входа, и я написал эту строку кода.
private void History() { int i = 0; dataGridView1.Rows.Clear(); cn.Open(); cm = new SqlCommand("select * from vwStockIn where cast(sdate as date) between @sdate and @sdate1 and status like 'Bitti'", cn); cm.Parameters.AddWithValue("@sdate", dt1.Value.ToShortDateString()); cm.Parameters.AddWithValue("@sdate1", dt2.Value.ToShortDateString()); dr = cm.ExecuteReader(); while (dr.Read()) { i++; dataGridView1.Rows.Add(i, dr[0].ToString(), dr[1].ToString(), dr[2].ToString(), dr[3].ToString(), dr[4].ToString(), dr[5].ToString(), dr[6].ToString()); } dr.Close(); cn.Close(); }
Теперь это очень шатко. Иногда он показывает мне время, которое я хочу, а иногда просто показывает все, иногда он дает ошибку, потому что я ставлю номер дня выше 12. может быть, это потому, что я думаю об этом как о европейской вещи времени, потому что только когда я нажимаю 13 и пытаюсь искать, он дает мне следующую ошибку .
System.Data.SqlClient.SqlException: 'Conversion failed when converting date and/or time from character string.'
Даже если я избавился от этой ошибки, все равно остается огромная проблема.Это ненадежно.Он никогда не показывает мне то, что я хочу, но показывает все остальное.Есть ли способ, чтобы я мог получить последовательные и точные даты? Я имею в виду, когда я нажимаю 01:09:2020 - 10:09:2020 и поиск его у меня есть данные в sql, которые находятся в 01:09:2020, но он не показывает мне этот, но он показывает мне тот, который находится в 18:09:2020, например, что происходит?
Что я уже пробовал:
Я подумал, что, возможно, проблема в том, что я попытался написать его с параметрами, и я попытался написать его так
cm = new SqlCommand("select * from vwStockIn where cast(sdate as date) between '" + dt1.Value.ToShortDateString() + "' and '" + dt2.Value.ToShortDateString() + "' and status like 'Done'", cn);
Кроме того, я пробовал писать его без приведения строки(sdate as date) и заменял ее просто sdate, но это тоже не имело никакого значения
mekenix
Я думаю,что проблема заключается в том,что microsoft sql ожидает значение dd,MM,yyyy, в то время как visual studio c# дает значение MM, dd, yyyy, но я не уверен. Даже если бы это была проблема, я понятия не имею, как ее исправить, поэтому мне нужна помощь :D