select * from customer where 是否投保人='''+flag1+''' and 是否被保险人='''+flag2+''' and 是否受益人='''+flag3+''' and 出生日期 like ''%'+trim(RzEdit1.Text)+'%''其中flag1,flag2,flag3是我设的变量,代表3个复选框(对应的字段为boolean)的选中状态!这个绝对没有错!错在:  出生日期 like ''%'+trim(RzEdit1.Text)+'%''  这个模糊查询!
其中 出生日期为datetime类型! 
运行不报错! 但达不到查询的要求! 当我输入数据库里本来存在的一个日期时查不出这条记录!   那几个flag条件都是选对了的!
当我改成  cast(出生日期 as varchar) like ''%'+trim(RzEdit1.Text)+'%''  也不行!!大家给我看下!!!

解决方案 »

  1.   

    RzEdit1.Text换在datetime类型呀,想问下你,怎么 出生日期 搞个模湖查询呀,要是查询个大于,小于,等于某个日期才合常理的吧
      

  2.   

    楼主思路有问题
    用 < 和 > 时间段就行了
      

  3.   

    楼上什么意思!?
    我迷糊查询是  因为有时候统计某年或某月的出生的人数!
    我觉得主要是因为数据类型是datetime而查询的RzEdit1.Text是string  所以达不到要求!
    出生日期 like cast(''%'+trim(RzEdit1.Text)+'%'' as datetime)
    也不行!!!
      

  4.   

    楼上的方法也不行!  改成你那样运行都不起!
    我给出语句大家帮我改下!
    sql.Add('select * from customer where 是否投保人='''+flag1+''' and 是否被保险人='''+flag2+''' and 是否受益人='''+flag3+''' and 出生日期 like cast(''%'+trim(RzEdit1.Text)+'%'' as datetime)');
      

  5.   

    模糊查询只适用于字符型的吧,日期时间类型只能用>、<、 =这些条件运算,再者就算把日期转换成字符串,模糊查询也没有任何意义
      

  6.   

    个人意见:可以把时间分成三部分,年,月,日,然后再分别对年用‘=’,月用‘=’,日用‘=’,那样只要输入年或月或日的其中任一一项就可以找到符合条件的选项了,虽然用的是精确的查询,但是效果是模糊的查询,我以前用asp实现过这个功能。
      

  7.   

    Datetime類型的数据不能用模糊查詢的,可用用between 開始日期 and 結束日期來查詢
      

  8.   

    convert(varchar(10),出生日期,120) like ''%'+trim(RzEdit1.Text)+'%''
      

  9.   

    脑力劳动网(http://www.nlld.net)是一个付费IT技术问答社区。目前注册送2元,如果您在那上面提问,网站可以资助你的提问1到3元,以便你得到满意的回答。
       你也可回答别人的提问,您的帐号上超过3元时,可以要求网站提现。
      

  10.   

    naner_china(naner)````正解!!多谢大家!