呵呵!先用 datetostr 把日期类型转化为 字符型,转化为 :YYYYMMDD然后用SQL语句查询: select * from table1 where  datetostr(dateitem) like 200105%呵呵!这样可以吗?如果可以,给分。

解决方案 »

  1.   

    请参考此句,调试可用 其中ship_date为date型 INTERBASE
    select ship_date,cast(ship_date as char(10)) from sales where cast(ship_date as char(10)) like '%MAY%'
      

  2.   

    var yy,mm,dd :word;
        StartDate,EndDate,Date :TDateTime;
    Date:=StrToDate('2001-5-15');
    DecodeDate(Date,yy,mm,dd);
    StartDate:=EncodeDate(yy,mm,1); // 2001-5-1;
    EndtDate:=EncodeDate(yy,mm,MonthDays[IsLeapYear(yy), mm]);// 2001-5-31;
    Select * from TableName Where date between StartDate and EndDate 
      

  3.   

    楼上几位大侠的方法我去试试。
    补充一点,我要查询的是历年的数据。用 between 解决不了。
      

  4.   

    我觉得最好是做个UDF---Month, Year,
    然后
    select * from anytable where (month(datefield) = 5) and (year(datefield) = 2001);
      

  5.   

    //Local SQL:
    Query1.Close;
    Query1.SQL.Clear;
    Query1.SQL.Add('Select * From 表 where Extract(MONTH From DateField)=5 ');
    Query1.Prepare;
    Query1.Open;
    //DateField为日期字段
    各位在答写SQL语句时,请先说明是本地SQL、还是后台存储过程,因有些函数本地SQL
    是不支持的!
      

  6.   

    请教 lhbzq :
    在 Ib 6.01 中通过,5.X不行。
    能否不用存储过程解决此问题。
      

  7.   

    接受答案。
    用 cast 可以解决问题,但比较麻烦,需手工将月份数字转换为英文。(powerlee 提供)
    用 Extract 也可以解决问题,但只能在 6.01 中使用。(lhbzq 提供)
    历年即为1995 1996 1997 1998 1999 2000 2001 2002 ...