procedure TForm1.Button1Click(Sender: TObject);
var
sql:string;
 begin
     sql:='select count(*) as gs from 学生信息 where (注册时间>=:begintime) and  (注册时间<=:endtime)';
     adoquery1.Close ;
     adoquery1.SQL.Clear ;
     adoquery1.SQL.Add(sql);     adoquery1.Parameters.ParamByName('begintime').Value :=DateTimePicker1.DateTime;
     adoquery1.Parameters.ParamByName('endtime').Value :=DateTimePicker2.DateTime;
     adoquery1.Prepared ;
     adoquery1.Open;
     statusbar1.Panels [1].Text :=adoquery1.fieldbyname('gs').AsString ;
     sql:='select * from 学生信息 where (注册时间>=:begintime) and (注册时间<=:endtime)';
     adoquery1.Close ;
     adoquery1.SQL.Clear ;
     adoquery1.SQL.Add(sql);
     adoquery1.Parameters.ParamByName('begintime').Value :=DateTimePicker1.DateTime;
     adoquery1.Parameters.ParamByName('endtime').Value :=DateTimePicker2.DateTime;
     adoquery1.Prepared ;
     adoquery1.Open;end;
access数据库,DateTimePicker1的format 为 yyyy-MM-dd HH:mm:ss  我的意思是查询一天中任意两个时间之间的数据

解决方案 »

  1.   

    对于access的数据库的日期查询应该使用下面的格式
    select * 
    from 
    table 
    where date > #2006-01-01#
      

  2.   

    将日期时间格式化为yyyy-mm-dd HH::mm::ss     
    然后
    where 注册时间 between #开始时间# and #结束时间#
     试试
      

  3.   

    where   注册时间   between   #'+formatdatetime('yyyy-mm-dd   HH::mm::ss',DateTimePicker1.DateTime)+'#   and   #'+formatdatetime('yyyy-mm-dd   HH::mm::ss',DateTimePicker2.DateTime)+'# 
      

  4.   

    你的 (注册时间> =:begintime) 写错了。
    中间多了个空格
    写成(注册时间>=:begintime)就可以了。有两处都是这个问题。
      

  5.   

    我试了程序我也测试过!每错,但就是读不出数据!我感觉是sql语句错了?你用的access数据库吗?在那测的。这个语句在access是对的,在delphi 中读不出数据
      

  6.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
    sql:string;
    begin                                                                 
       adoquery1.Close;
       sql:='select   count(*)   as   gs   from   学生信息   where   (注册时间>=:begintime)   and  (注册时间<=:endtime)';
       adoquery1.SQL.Clear;
       adoquery1.SQL.Add(sql);   adoquery1.Parameters.ParamByName('begintime').Value:=DateTimePicker1.DateTime;
      adoquery1.Parameters.ParamByName('endtime').Value:=DateTimePicker2.DateTime;
       adoquery1.Prepared   ;
       showmessage(sql);
       adoquery1.Open;
       statusbar1.Panels   [1].Text   :=adoquery1.fieldbyname('gs').AsString   ;
       sql:='select   *   from   学生信息   where   (注册时间>=:begintime)   and   (注册时间<=:endtime)';
       adoquery1.Close   ;
       adoquery1.SQL.Clear   ;
       adoquery1.SQL.Add(sql);
       adoquery1.Parameters.ParamByName('begintime').Value:=DateTimePicker1.DateTime;
       adoquery1.Parameters.ParamByName('endtime').Value:=DateTimePicker2.DateTime;
       adoquery1.Prepared   ;
       showmessage(sql);
       adoquery1.Open;
    end;
    以上是我我测试过的代码,除了空格那里,其他都是对的,也有数据出来。你试试看.
      

  7.   

    试了一下你所说的情况,应该没有问题,我在ACCESS中建立了一个表 test
    表名:test
    字段1  aa        文本
    字段2  borndate  日期/时间 
     with adoquery1 do
      begin
        close;
        SQL.Text := ' select count(*) as gs from test where borndate>=:begintime';
        Parameters.ParamByName('begintime').Value :=datetimePicker1.DateTime;
        Open;
        label1.Caption := Fields[0].AsString;
        close;
        SQL.Text := ' select * from test where borndate>=:begintime and borndate<=:endtime';
        Parameters.ParamByName('begintime').Value :=datetimePicker1.DateTime;
        Parameters.ParamByName('endtime').Value :=datetimePicker2.DateTime;
        Open;
        while not eof do
        begin
          Memo1.Lines.Add(fields[0].AsString+'   '+Fields[1].AsString);
          Next;
        end;
      end;
      

  8.   

    窗体中一个adoconnection,一个adoquery  
    一个label,一个memo 你试一下,
    "我试了程序我也测试过!每错,但就是读不出数据" ---看一下你的表中的字段是否为日期型的
      

  9.   

    查询一天中任意两个时间之间的数据:  procedure TForm1.Button1Click(Sender: TObject);
    var
    sql:string;
    begin                                                           
       adoquery1.Close;
       sql:='select   count(*)   as   gs   from   学生信息   where   (注册时间>=:begintime)   and  (注 册时间<=:endtime)';
       adoquery1.SQL.Clear;
       adoquery1.SQL.Add(sql);
       adoquery1.Parameters.ParamByName('begintime').Value:=formatdatetime('yyyy-mm-dd hh:mm:ss',DateTimePicker1.DateTime);
       adoquery1.Parameters.ParamByName('endtime').Value:=formatdatetime('yyyy-mm-dd hh:mm:ss',DateTimePicker2.DateTime);
       adoquery1.Prepared   ;
       adoquery1.Open;
       statusbar1.Panels[1].Text :=adoquery1.fieldbyname('gs').AsString   ;
       sql:='select   *   from   学生信息   where   (注册时间>=:begintime)   and   (注册时间<=:endtime)';
       adoquery1.Close   ;
       adoquery1.SQL.Clear   ;
       adoquery1.SQL.Add(sql);
       adoquery1.Parameters.ParamByName('begintime').Value:=formatdatetime('yyyy-mm-dd hh:mm:ss',DateTimePicker1.DateTime);
       adoquery1.Parameters.ParamByName('endtime').Value:=formatdatetime('yyyy-mm-dd hh:mm:ss',DateTimePicker2.DateTime);
       adoquery1.Prepared   ;
       adoquery1.Open;
    end;需要把日期格式化就可以了.
      

  10.   

    解决!用了4个控件;
      sql:='select   count(*)   as   gs   from   学生信息   where   (注册时间> =:begintime)   and     (注册时间 <=:endtime)'; 
              adoquery1.Close   ; 
              adoquery1.SQL.Clear   ; 
              adoquery1.SQL.Add(sql); 
             DateTimePicker2.Date:=DateTimePicker1.Date
               adoquery1.Parameters.ParamByName('begintime').Value   :=DateTimePicker1.Date; 
              adoquery1.Parameters.ParamByName('endtime').Value   :=DateTimePicker3.DateTime;  adoquery1.Parameters.ParamByName('begintime').Value   :=DateTimePicker2.DateTmie; 
              adoquery1.Parameters.ParamByName('endtime').Value   :=DateTimePicker4.DateTime; 
              adoquery1.Prepared   ; 
              adoquery1.Open; 
              statusbar1.Panels   [1].Text   :=adoquery1.fieldbyname('gs').AsString   ; 
              sql:='select   *   from   学生信息   where   (注册时间> =:begintime)   and   (注册时间 <=:endtime)'; 
              adoquery1.Close   ; 
              adoquery1.SQL.Clear   ; 
              adoquery1.SQL.Add(sql); 
              adoquery1.Parameters.ParamByName('begintime').Value   :=DateTimePicker1.DateTime; 
              adoquery1.Parameters.ParamByName('endtime').Value   :=DateTimePicker2.DateTime; 
              adoquery1.Prepared   ; 
              adoquery1.Open;