有一张表a
有一字段为inputdate(为日期型)
from1上有两个datatimepicker(分别为起始时间和终止时间)
另有adoquery1
我想把表中凡在这两个时间段的记录给select出来
这个sql怎么写?

解决方案 »

  1.   

    准确时间时候:
    select * From 表2
    where inputdate>=fromdate
    and  inputdate<=todate
    只用精确到天:
    select * From 表2
    where datediff(day,inputdate,fromdate)<=0
    datediff(day,inputdate,todate)>=0
      

  2.   

    with adoquery1 do
      begin
        Close;
        Sql.Clear;
        Sql.Text:='select * from 表a where inputdate>='''+dataToStr(Datatimepicker1.Data)+''' and inputdate <='''+dataToStr(Datatimepicker1.Data)+''''
        Open;
      end;
      

  3.   

    adouqery1.close;
    adoquery1.sql.text :=' select * From 表2 where inputdate>=''' + datetimepicker1.text + ''' and  inputdate<=''' + dateimepicker2.text +'''';
    adoquery1.open;
      

  4.   

    select * from a where inputdate>=:date1 and inputdate<=:date2 
    adoquery1.Params[0].AsString :=  FormatDateTime('yyyy-mm-dd',datetimepicker1.Date)
    adoquery1.Params[1].AsString :=  FormatDateTime('yyyy-mm-dd',datetimepicker2.Date)
      

  5.   

    jaunmai(冰河) :按照你的做法。为什么有这样一怪问题:
    比如:起始: 03-9-3 终止:03-9-5
    明明程序中是inputdate<=:dtae2
    但我5日的数据为什么不显示?
      

  6.   

    我的inputdate是直接存一个datetimepicker.date
    也就是有日期也有时间的
    实际上我上面的问题精确到天就可以了
    那怎么写?
      

  7.   

    日期类型的数据本质也是浮点型的
    所以可以直接用关系比较符(<,>,=)来比较日期类型分长短
    要是数值比较出现异常
    可以转换成字符串来比较
      

  8.   

    改成這樣
    adoquery1.Params[0].AsString := 
     FormatDateTime('yyyy-mm-dd 00:00:00',datetimepicker1.Datetime)adoquery1.Params[1].AsString := 
     FormatDateTime('yyyy-mm-dd 23:59:59',datetimepicker2.Datetime)