查询数据库一个时间段范围的数据!!!本人新手。。。请大神

时间:2022-11-19 11:24:28
数据库里有一个交易时间。。然后前台有个开始时间和结束时间怎么做查询求具体语句。我知道用between但是不知道怎么定义变量。。还得考虑到多条件查询上边是这么写的,

      if (TextBox1.Text != "") {
            a = a + " and 网点名称=@wm ";
            h1.Add("@wm", TextBox1.Text);        
        
        }

        if (TextBox2.Text != "") {

            a = a + " and 交易类型=@lx ";
            h1.Add("@lx", TextBox2.Text);  
            
        
        }


        if (txtCardID.Text != "") {

            a = a + " and 银行卡号 like '%'+@kh+'%'";
            h1.Add("@kh", txtCardID.Text);  
        
        
        }

7 个解决方案

#1


select * from xxx where datefield between @a and @b

你用参数化查询,给参数a和b赋值就行了

#2


DateTime dt;
            if (DateTime.TryParse(TimeStart.Text, out dt))
            {
                a = a + " and 时间 <= @TimeStart;
                h1.Add("@TimeStart", dt);  
            }

类似上面的
然后你的like也是错误的,应该是下面这种
a = a + " and 银行卡号 like @kh";
            h1.Add("@kh", "%"+txtCardID.Text+"%");
 

#3


引用 1 楼 bdmh 的回复:
select * from xxx where datefield between @a and @b

你用参数化查询,给参数a和b赋值就行了



这样吗?
 
        if (txtStartTime.Text != "" && txtEndTime.Text != "") {


            a = a + " datefield between @kaish and @jieshu ";
             h1.Add("@kaishi", txtStartTime.Text);
             h1.Add("@jieshu", txtEndTime.Text);
          
        
        }

#4


引用 1 楼 bdmh 的回复:
select * from xxx where datefield between @a and @b

你用参数化查询,给参数a和b赋值就行了



非常感谢用你的方法我做出来了。就是有点不理解能讲讲吗-- 查询数据库一个时间段范围的数据!!!本人新手。。。请大神

#6


select * from table where time1>='starttime' and time2<='endtime' and name like'%a%' and .....
需要条件一直往后面加,但是要考虑性能问题,大数据量这么写肯定查询很慢

#7


引用 4 楼 u011147081 的回复:
Quote: 引用 1 楼 bdmh 的回复:

select * from xxx where datefield between @a and @b

你用参数化查询,给参数a和b赋值就行了



非常感谢用你的方法我做出来了。就是有点不理解能讲讲吗-- 查询数据库一个时间段范围的数据!!!本人新手。。。请大神

SQL语句的基础知识你需要恶补了
先弄明白在数据库里怎么查询,然后代码里实现这个SQL语句的拼接就行了

#1


select * from xxx where datefield between @a and @b

你用参数化查询,给参数a和b赋值就行了

#2


DateTime dt;
            if (DateTime.TryParse(TimeStart.Text, out dt))
            {
                a = a + " and 时间 <= @TimeStart;
                h1.Add("@TimeStart", dt);  
            }

类似上面的
然后你的like也是错误的,应该是下面这种
a = a + " and 银行卡号 like @kh";
            h1.Add("@kh", "%"+txtCardID.Text+"%");
 

#3


引用 1 楼 bdmh 的回复:
select * from xxx where datefield between @a and @b

你用参数化查询,给参数a和b赋值就行了



这样吗?
 
        if (txtStartTime.Text != "" && txtEndTime.Text != "") {


            a = a + " datefield between @kaish and @jieshu ";
             h1.Add("@kaishi", txtStartTime.Text);
             h1.Add("@jieshu", txtEndTime.Text);
          
        
        }

#4


引用 1 楼 bdmh 的回复:
select * from xxx where datefield between @a and @b

你用参数化查询,给参数a和b赋值就行了



非常感谢用你的方法我做出来了。就是有点不理解能讲讲吗-- 查询数据库一个时间段范围的数据!!!本人新手。。。请大神

#5


#6


select * from table where time1>='starttime' and time2<='endtime' and name like'%a%' and .....
需要条件一直往后面加,但是要考虑性能问题,大数据量这么写肯定查询很慢

#7


引用 4 楼 u011147081 的回复:
Quote: 引用 1 楼 bdmh 的回复:

select * from xxx where datefield between @a and @b

你用参数化查询,给参数a和b赋值就行了



非常感谢用你的方法我做出来了。就是有点不理解能讲讲吗-- 查询数据库一个时间段范围的数据!!!本人新手。。。请大神

SQL语句的基础知识你需要恶补了
先弄明白在数据库里怎么查询,然后代码里实现这个SQL语句的拼接就行了