如何按时间段来取数据,及优化SQL语句;

请教一下,我从数据库的取值语句如下,是采用datagridview和文本框text结合使用,下面想采用按时间段来查询(如所附截图所框),所查结果并按时间,降序排序,请各位指导一下如何处理,

另外,这些相关语句是否需要分开,若是在同一条语句上写,是否太长了;

img


 private void button1_Click(object sender, EventArgs e)
        {
            //连接数据库
            conn = new SqlConnection("server=IP;database=DB;user=sa;password=passw0rd");

            conn.Open();

            //查询条件      
            SqlString = "select EquipmentName,CreateTime,ParamsName,Value from b_HistoricalData where Equipmentname = '" + comboBox1.Text + "'and ParamsName like '%" + textBox1.Text + "%'"; 
                
                //配置了与下拉列表绑定,按其查询分类显示
            //加载数据并显示

            try
            {
                //查询条件和SqlConnection连接
                SqlCommand cmd = new SqlCommand(SqlString, conn);
                //数据适配器
                SqlDataAdapter sda = new SqlDataAdapter();
                sda.SelectCommand = cmd;
                //DataTable存储数据
                DataTable dt = new DataTable();
                sda.Fill(dt);
                dataGridView1.DataSource = dt;
            }
            catch
            { }
            finally
            {
                conn.Close();
            }

以下答案引用自GPT-3大模型,请合理使用:

如果要按时间段来查询并降序排序,可以使用如下的SQL语句:
select EquipmentName,CreateTime,ParamsName,Value from b_HistoricalData 
where Equipmentname = 'xxx'and ParamsName like '%yyy%' 
and CreateTime between '2018-01-01' and '2020-01-01'
ORDER BY CreateTime DESC;

在上述SQL语句中,'xxx''yyy'分别可以用comboBox1.Text和textBox1.Text来替换,而'2018-01-01''2020-01-01'可以替换为你的起始时间和结束时间。最后,根据你发布的截图,应该可以使用DateTimePicker来替换上面的时间,获得dateTimePicker的时间可以使用语句dateTimePicker1.Value.ToString("yyyy-MM-dd")。


所以,最终的SQL语句可以改写为:
select EquipmentName,CreateTime,ParamsName,Value from b_HistoricalData 
where Equipmentname = '" + comboBox1.Text + "'and ParamsName like '%" + textBox1.Text + "%' 
and CreateTime between '" + dateTimePicker1.Value.ToString("yyyy-MM-dd") + "' and '" + dateTimePicker2.Value.ToString("yyyy-MM-dd") + "' 
ORDER BY CreateTime DESC;

如果是在同一条语句上编写,不会太长,但是建议还是将这两个条件分开,也更加直观易懂。

如果我的回答解决了您的问题,请采纳我的回答


SqlString = "select EquipmentName,CreateTime,ParamsName,Value from b_HistoricalData  where Equipmentname = '" + comboBox1.Text + "'and ParamsName like '%" + textBox1.Text + "%' and CreateTime >= '" +  dateTimePicker1.Value.ToString("yyyy-MM-dd") +"' and CreateTime <= '" +  dateTimePicker2.Value.ToString("yyyy-MM-dd") + "' order by CreateTime asc"; 

就在加条件呗 and 时间字段>='时间bengin' and 时间字段<='时间end ' order by 时间字段 desc 另外可以用 offset x rows fetch next x rows only做分页处理
另外语句使者c#操作数据库的语句还是sql 其实让人看的懂就行不别扭就行

非常感谢,各位同仁的指导 ,我试一下哈,再次感谢了;

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^