Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用文本框在两个日期之间进行Sql查询_C#_Sql_Database_Gridview_Textbox - Fatal编程技术网

C# 使用文本框在两个日期之间进行Sql查询

C# 使用文本框在两个日期之间进行Sql查询,c#,sql,database,gridview,textbox,C#,Sql,Database,Gridview,Textbox,我有一个从我的数据库获取数据的查询,它需要过滤掉用户在两个文本框中填写的特定日期之间的数据。 我需要填写如下文本框:2016-9-13,否则它将不起作用(数据库中的日期也是2016-9-13)。 但当它填充gridview时,单元格显示:13-9-2016 我想按如下顺序填写日期:13-9-2016。我如何才能做到这一点,我需要改变什么 下面是一些代码,它提供了数据库中的数据 connect = new SqlConnection(@"Data Source=LP12;Initial Cata

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

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

基本上,解析日期并向下传递
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"
“选择DrukSensor、流量传感器、温度传感器、Kwaliteitssensor、OlieVerbruik、ToeRent、DateTime、Schip
来自SysteemSensorInfo
其中datediff(day,DateTime,@StartDate)=0“
您应该使用Datediff()函数。在内部,它将以任何格式管理有效日期以进行日期比较

"SELECT DrukSensor, FlowSensor, TempSensor, KwaliteitSensor, OlieVerbruik,     Toerental, DateTime, Schip 
FROM SysteemSensorInfo 
WHERE datediff(day,DateTime,@StartDate)<=0 AND datediff(day,DateTime,@EndDate)>=0"
“选择DrukSensor、流量传感器、温度传感器、Kwaliteitssensor、OlieVerbruik、ToeRent、DateTime、Schip
来自SysteemSensorInfo
其中datediff(day,DateTime,@StartDate)=0“

< /代码>永远不要使用AdvId值传递字符串,如果你想查询数据,也考虑使用DateTimePicker从用户那里获取日期输入,这样他们就不能声称它们是“01 / 02 / 2016”。一月的两个,而不是二月的第一个。如果你想查询数据,也不要使用AddieValuy传递它的字符串,也可以考虑使用DateTimePicker从你的用户那里获取日期输入,这样他们就不能声称他们的意思是“01 / 02 / 2016”是一月的两个,而不是二月的第一个。