Sql查询两个日期之间的文本框

本文关键字:之间 日期 文本 两个 查询 Sql | 更新日期: 2023-09-27 18:06:52

我有一个查询,从我的数据库中获取数据,它需要过滤掉某些日期之间的数据,用户将填写两个文本框。我需要填写这样的文本框: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();

Sql查询两个日期之间的文本框

基本上,解析日期并传递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);
}

应该使用Datediff()函数。在内部,它将管理任何格式的有效日期进行日期比较。

"SELECT DrukSensor, FlowSensor, TempSensor, KwaliteitSensor, OlieVerbruik,     Toerental, DateTime, Schip 
FROM SysteemSensorInfo 
WHERE datediff(day,DateTime,@StartDate)<=0 AND datediff(day,DateTime,@EndDate)>=0"