查询一个时间段内的记录,并显示在datagridview

时间:2021-11-30 17:20:56
查询一个时间段内的记录,并显示在datagridview
时间控件是datatimepicker
SQL语句怎么写?
或者具体怎么实现?

13 个解决方案

#1


select... From ... Where datediff(dd,time字段,@startime)<=0 and  datediff(dd,time字段,@endime)>=0

#2



select * from  table where  data between date1 and date2

date1 和date2 是datatimepicker的值。

#3


string n = dateTimePicker1.Value.ToString();
            string l = dateTimePicker2.Value.ToString();
            string sql = "select * from Tpay where paydate between "+n+" and "+l+"";
            using (SqlDataAdapter da=new SqlDataAdapter (sql,constr))
            {
                DataSet ds = new DataSet();
                da.Fill(ds);   //提示这块错误 ( '15' 附近有语法错误。)
                this.dataGridView2.DataSource = ds.Tables[0];
            }

#4



 string sql =string.format( "select * from Tpay where paydate between {0} and {1}",n,l);

#5


引用 1 楼 liuchaolin 的回复:
select... From ... Where datediff(dd,time字段,@startime)<=0 and  datediff(dd,time字段,@endime)>=0

具体帮忙讲下   datediff函数里面的东西代表什么?

#6


引用 5 楼 qiangzi1208 的回复:
Quote: 引用 1 楼 liuchaolin 的回复:

select... From ... Where datediff(dd,time字段,@startime)<=0 and  datediff(dd,time字段,@endime)>=0

具体帮忙讲下   datediff函数里面的东西代表什么?



datediff(dd,time字段,@startime)===后边的时间-前边的时间得到的天数<=0即开始时间-数据库里的时间<=0

例如
记录
1,2012-1-10
2,2012-1-11
3,2012-1,12
开始时间=2012-1-11

1,2012-1-11   -    2012-1-10   == 1  >0   不符合

2,2012-1-11   -    2012-1-11   == 0  <=0   符合

3,2012-1-11   -    2012-1-12   < 0  <=0   符合

这样就得到2,3这两条数据了,如果再加上结束,那就是得到范围内的记录了

#7


3楼的可以一试

#8


写一个查询语句
select * from test where paydate between "+a+" and "+b+"";

在用一个DataSet接收  List  等等。

绑定DataGridView 
     把数据库对应的列名  指定到DataGridview 显示属性就ok


推荐个学习网站  有空可以去看下  对你绝对有帮助
http://www.51zxw.net/study.asp?vip=8963801

#9


你用的什么数据库?不同数据库SQL语法不太一样.
如果是ORACLE,比较时间必须先用to_date函数将字段转为时间类型再比较

#10


最好还是先查查数据库基础,SQL语句的用法
然后在客户端上执行成功了,再移植到程序中

#11


"select* from xxx where addDateTime  >=  #" + dateTimePicker1.Value.ToString("MM/dd/yyyy") + "# and addDateTime  <=  #" +
 dateTimePicker2.Value.AddDays(1).ToString("MM/dd/yyyy") + "#  order by addDateTime ";

#12


"select* from xxx where addDateTime  >=  " + dateTimePicker1.Value.ToString("MM/dd/yyyy") + " and addDateTime  <=  " +
 dateTimePicker2.Value.AddDays(1).ToString("MM/dd/yyyy") + "  order by addDateTime "; 

上面发的是access查询

#13


给你查询1988-01-01至1995-01-01之间的例子?
  int noncePage = Convert.ToInt32(labPage.Text);
        PagedDataSource ps = new PagedDataSource();
        string sqlSel1 = "select * from tb_huen_lian,tb_HuenLian where ICQ between '1988-01-01' and '1995-01-01' and tb_huen_lian.UserName = tb_HuenLian.UserName and tb_HuenLian.sex like '%" + Session["searchKey2"] + "%' and tb_HuenLian.city like '%" + Session["searchKey1"] + "%'";
        ps.DataSource = operateData.getRows(sqlSel1).DefaultView;
        ps.AllowPaging = true;
        ps.PageSize = 8;//CodeGo.net
        ps.CurrentPageIndex = noncePage - 1;
        this.lnkbtnFront.Enabled = true;
        this.lnkbtnNext.Enabled = true;
        this.lnkbtnLast.Enabled = true;
        this.lnkbtnFirst.Enabled = true;

#1


select... From ... Where datediff(dd,time字段,@startime)<=0 and  datediff(dd,time字段,@endime)>=0

#2



select * from  table where  data between date1 and date2

date1 和date2 是datatimepicker的值。

#3


string n = dateTimePicker1.Value.ToString();
            string l = dateTimePicker2.Value.ToString();
            string sql = "select * from Tpay where paydate between "+n+" and "+l+"";
            using (SqlDataAdapter da=new SqlDataAdapter (sql,constr))
            {
                DataSet ds = new DataSet();
                da.Fill(ds);   //提示这块错误 ( '15' 附近有语法错误。)
                this.dataGridView2.DataSource = ds.Tables[0];
            }

#4



 string sql =string.format( "select * from Tpay where paydate between {0} and {1}",n,l);

#5


引用 1 楼 liuchaolin 的回复:
select... From ... Where datediff(dd,time字段,@startime)<=0 and  datediff(dd,time字段,@endime)>=0

具体帮忙讲下   datediff函数里面的东西代表什么?

#6


引用 5 楼 qiangzi1208 的回复:
Quote: 引用 1 楼 liuchaolin 的回复:

select... From ... Where datediff(dd,time字段,@startime)<=0 and  datediff(dd,time字段,@endime)>=0

具体帮忙讲下   datediff函数里面的东西代表什么?



datediff(dd,time字段,@startime)===后边的时间-前边的时间得到的天数<=0即开始时间-数据库里的时间<=0

例如
记录
1,2012-1-10
2,2012-1-11
3,2012-1,12
开始时间=2012-1-11

1,2012-1-11   -    2012-1-10   == 1  >0   不符合

2,2012-1-11   -    2012-1-11   == 0  <=0   符合

3,2012-1-11   -    2012-1-12   < 0  <=0   符合

这样就得到2,3这两条数据了,如果再加上结束,那就是得到范围内的记录了

#7


3楼的可以一试

#8


写一个查询语句
select * from test where paydate between "+a+" and "+b+"";

在用一个DataSet接收  List  等等。

绑定DataGridView 
     把数据库对应的列名  指定到DataGridview 显示属性就ok


推荐个学习网站  有空可以去看下  对你绝对有帮助
http://www.51zxw.net/study.asp?vip=8963801

#9


你用的什么数据库?不同数据库SQL语法不太一样.
如果是ORACLE,比较时间必须先用to_date函数将字段转为时间类型再比较

#10


最好还是先查查数据库基础,SQL语句的用法
然后在客户端上执行成功了,再移植到程序中

#11


"select* from xxx where addDateTime  >=  #" + dateTimePicker1.Value.ToString("MM/dd/yyyy") + "# and addDateTime  <=  #" +
 dateTimePicker2.Value.AddDays(1).ToString("MM/dd/yyyy") + "#  order by addDateTime ";

#12


"select* from xxx where addDateTime  >=  " + dateTimePicker1.Value.ToString("MM/dd/yyyy") + " and addDateTime  <=  " +
 dateTimePicker2.Value.AddDays(1).ToString("MM/dd/yyyy") + "  order by addDateTime "; 

上面发的是access查询

#13


给你查询1988-01-01至1995-01-01之间的例子?
  int noncePage = Convert.ToInt32(labPage.Text);
        PagedDataSource ps = new PagedDataSource();
        string sqlSel1 = "select * from tb_huen_lian,tb_HuenLian where ICQ between '1988-01-01' and '1995-01-01' and tb_huen_lian.UserName = tb_HuenLian.UserName and tb_HuenLian.sex like '%" + Session["searchKey2"] + "%' and tb_HuenLian.city like '%" + Session["searchKey1"] + "%'";
        ps.DataSource = operateData.getRows(sqlSel1).DefaultView;
        ps.AllowPaging = true;
        ps.PageSize = 8;//CodeGo.net
        ps.CurrentPageIndex = noncePage - 1;
        this.lnkbtnFront.Enabled = true;
        this.lnkbtnNext.Enabled = true;
        this.lnkbtnLast.Enabled = true;
        this.lnkbtnFirst.Enabled = true;