我建了一个表,有一个字段是’出生日期‘,类型是Date。现在我要查找一个日期,例如要找两个日期之间的某一天,在表单中,用query连接那个表,两个日期分别用DateTimePicker1,DateTimePicker2来表示,那表达式就应该是DateTimePicker1<‘所要找的日期’<DateTimePicker2,‘<’分别用combobox1,combobox2来表示,那么在这个条件下我应该怎么写那查询程序啊??

解决方案 »

  1.   

    如果你是介于两个日期之间的话 那么你可以用between来实现的
    如果还有其他的可能的那就分开写了
      

  2.   

    分开写其实就是
    sql.add('.... where a'+combobox1.text+':aa'....);
    parmeters.parambyname('aa').value:=datetimepicker1.date;
    ....
      

  3.   

    procedure TForm1.Button1Click(Sender: TObject);
    begin
    with query1 do
    begin
    close;
    sql.Clear ;
    sql.Text :='select *  from table where  (sj'+combobox1.text+':dd) and (sj'+combobox2.text+':dd2) '
     query1.ParamByName('dd').Value :=formatedatetime('yyyy-mm- dd',datetimepicker1.Date );
    query1.ParamByName('dd2').Value :=formatedatetime('yyyy-mm-dd',datetimepicker2.date);
     open;end;
    end;
      

  4.   

    sqlstr:='select * from table where '+'出生日期'+(combobox1.text)+''''+datetostr(datetimepicker1)+''''; 
    query.sql.add( sqlstr)
      

  5.   

    更具体点:
    sqlstr:='select * from table where '+'出生日期'+(combobox1.text)+''''+datetostr(datetimepicker1)+''''+'and '+'出生日期'+(combobox2.text)+''''+datetostr(datetimepicker2)+''''; 
    query.sql.add( sqlstr)
      

  6.   

    不能用“>” “<”吗?
      

  7.   

    我试过了,编译是可以的,可是在运行后,我要找某一个日期时,就出现下面这个错误:
    'type mismatch in expression'.请问是哪里错了??
      

  8.   

    上面那贴是对onlyonetime说的,用的就是你那具体的方法。可是就出现了我刚才说的那个错误。
      

  9.   

    用to_date,將字符串轉化為日期類型,然後比較
      

  10.   

    SQL Server:sql='select ... where 出生日期>'''+Ccombobox1.text+''' and 出生日期<'''+DateToStr(DateTimePicker1.Date)+''' '如果是Access:sql='select ... where 出生日期>#'+Ccombobox1.text+'# and 出生日期<#'+DateToStr(DateTimePicker1.Date)+'# '
      

  11.   

    在SQL语句中使用日期型parameter,不知道是不是可以
      

  12.   

    请问如果用between那应该怎么做呢?
      

  13.   

    select  * from table where 出生日期 between formatedatetime('yyyy-mm-dd',datetimepicker1.datetime) and formatedatetime('yyyy-mm-dd',datetimepicker2.datetime)
      

  14.   

    你可以定义两个变量(a,b)来表示DateTimePicker1,DateTimePicker2,
      var a,b:tdatetime;
    然后,你可以用过滤的方法来查询;
     例如:你连接数据查询的ado为ado1,所要找的日期为d;
      代码如下:
         a:=DateTimePicker1;
         b:=DateTimePicker1;
         ado1.close;
         ado1.commentext:='select  * from table where d between formatedatetime('yyyy-mm-dd',a.datetime) and formatedatetime('yyyy-mm-dd',b.datetime)'
         ado1.open;
      

  15.   

    with query do
    begin
      close ;
      sql.clear ;
      sql.add('select * from table where 出生日期 between :d1 and :d2') ; 
      parameters[0].value:=DateTimePicker1.date ;
      parameters[1].value:=DateTimePicker2.date ;
      prepared ;
      open ;
    end ;