我想要查询某个月份的记录,比如:2004年8月,
也就是查询数据库中所有日期以2004-8开头的记录,
我在查询分析器里试过,数据库中是有符合条件的记录的,
但是查询结果是没有一条记录。
select * from table where rq like '2004-8%',rq是datetime类型的。
请教如何实现?谢谢!

解决方案 »

  1.   

    select * from table where rq < YourMaxDate and rq > YourMinDate
      

  2.   

    select * From Employees where 
    BirthDate > '1952-02-01' and BirthDate < '1963-02-01'
      

  3.   

    SQL.Add('select * from table where rq like ''2004-8%''')查询分析器里OK,应该不会有问题的
      

  4.   

    我想可以这样:
    ComboBox1.text:取2004,ComboBox2.text取1到12.
    label1.caption:=comboBox1.text+comboBox2.text;
    select * from table where rq='''+label1.caption+''';
      

  5.   

    我在查询分析器里试过,只是找不到我想要的结果。如果用rq>=min and rq<=max 这样就要判断一个月最大一天和最小一天,情况复杂一些,我只是想用模糊查询简单一点,但是如果不能对日期模糊查询,也只能用其他办法了。
      

  6.   

    SELECT  * FROM Fin_PaymentMaster where (convert(varchar(4),(DATEPART(yyyy,billdate) )))+'-'+ (convert(varchar(2),(DATEPART(mm,billdate) ))) like '2004-9%'
      

  7.   

    还有,数据库中有多条2004年的纪录,我模糊查询rq like '2004%' 结果没有符合条件的记录,
    用 rq like '%2004%'  才能找到2004年的记录,不知道为什么?
    我日期的格式都是2004-8-1这样的。
      

  8.   

    SQL.Add('select * from table where to_char(rq, 'yyyy-mm') like ''2004-8%''')
      

  9.   

    to Nozzle:你的方法在查询分析器里是可以的,但是在delphi
    里编译不通过:operator not applicable to this operand type,
    adoqry_bx.SQL.Add('select rqs,ygh,xm,bm,kylbx,ksybx,ylbx,sybx,gsbx from gzb '
         +'where (convert(varchar(4),(DATEPART(yyyy,rqs) )))+'-'+ (convert(varchar (2),(DATEPART(mm,rqs) )))'
         +'like '''+'2004'+'%'+'''');
    错误在+'like '''+'2004'+'%'+'''' ); 一行。
      

  10.   

    'SELECT  * FROM rzb  where (convert(varchar(4),(DATEPART(yyyy,dltime) )))+''-''+(convert(varchar(2),(DATEPART(mm,dltime) ))) like ''2004-9%'''
    搞定给分哦!呵呵
      

  11.   

    g拯救明天的方法有用的,但是我还想再问:记录中有往年和今年记录,我把今年的年份赋值给y:integer,想要结果是 like y- edit1.text %  ,不知道怎么写sql语句?
    adoqry.sql.add('like ''inttostr(y)+'-'+edit1.text+'%''')认为%是非法字符,
    应该怎么写才对?