我有一个从我的数据库获取数据的查询,它需要在用户填写两个文本框的某些日期之间过滤掉数据。 我需要填写文本框,如:2016-9-13否则它不会工作(数据库中的日期也是2016-9-13)。 但是当它填满gridview时,细胞说:13-9-2016。
我想按顺序填写日期:13-9-2016。我怎么能这样做,我需要改变什么?
以下是一些代码,可以从数据库中获取数据。
connect = new SqlConnection(@"Data Source=LP12;Initial Catalog=Data;Integrated Security=True");
connect.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = connect;
cmd.CommandText = "SELECT DrukSensor, FlowSensor, TempSensor, KwaliteitSensor, OlieVerbruik, Toerental, DateTime, Schip FROM SysteemSensorInfo WHERE DateTime BETWEEN @StartDate AND @EndDate";
cmd.Parameters.AddWithValue("@StartDate", TextBoxBeginDatum.Text);
cmd.Parameters.AddWithValue("@EndDate", TextBoxEindDatum.Text);
DataSet ds = new DataSet();
new SqlDataAdapter(cmd).Fill(ds);
GridView1.DataSource = ds.Tables[0];
GridView1.DataBind();
答案 0 :(得分:3)
基本上,解析日期并传递DateTime
值:
cmd.Parameters.AddWithValue("@StartDate", ParseDate(TextBoxBeginDatum.Text));
cmd.Parameters.AddWithValue("@EndDate", ParseDate(TextBoxEindDatum.Text));
...
static DateTime ParseDate(string text) {
// TODO; possibly just: return DateTime.Parse(text);
}
答案 1 :(得分:1)
你应该使用Datediff()函数。在内部,它将以任何格式管理有效日期以进行日期比较。
"SELECT DrukSensor, FlowSensor, TempSensor, KwaliteitSensor, OlieVerbruik, Toerental, DateTime, Schip
FROM SysteemSensorInfo
WHERE datediff(day,DateTime,@StartDate)<=0 AND datediff(day,DateTime,@EndDate)>=0"