我现在有两个查询时间 Tstart,Tend
现在要查询数据库中 所有 时间字段 mytime 位于 Tstart 之后(包括Tstart) 并且 位于 Tend之前的(包括Tend) 所有数据 我是这么查询的:select * from mytable where mytime>=#Tstart# and mytime<=#Tend#但是发现有问题,记录集不包括Tend 这天的数据,请问我这个不能么??

解决方案 »

  1.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      date1,date2 :TDatetime ;
    begin
      date1:=Datetimepicker1.DateTime ;//起始时间
      date2:=Datetimepicker2.DateTime ;//截止时间    with adoquery1 do
      begin
        close ;
        sql.Text :=format('select * from QuartersReportRecod where submittime between ''%s'' and ''%s''',[formatdatetime('yyy-mm-dd',date1),formatdatetime('yyyy-mm-dd',date2)]);
        open ;
      end;
    end;
      

  2.   

    在SQL中,BETWEEN的日期要用单引号括起来,可是在ACCESS中,要用#号括起来……
      

  3.   

    用between吧,'select * from TABLE where mytime between #Tstart# and #Tend+1#'
    不过时间计算精确到时分秒的,当日期没有包含时分秒时,默认是00:00:00, 
      

  4.   

    不行的话 就把Tend这个值加1
      

  5.   

    不要用日期时间类型去表示TSTART和Tend这两个字段,最好用数字类型,不方便表示的话就用文本类型。查询的时候用Between....and就可以了
      

  6.   

    多谢大家,我知道是怎么回事儿了,Tstart 和 Tend必须加上时分秒限制select * from mytable where mytime>=#Tstart 00:00:00# and mytime<=#Tend 23:59:59#