我的表中日期是用三个字段来表示的,分别是:年、月、日。现在我想查询一段时间范围内的记录来进行统计,不知应当如何实现,请给个思路。

解决方案 »

  1.   

    实在不明白为啥这样设计。。数据进库也不方便的吧??

    可以考虑用Encodedate
    取出三个字段值后。
    Encodedate(year,month,date)
      

  2.   

    with query do
    begin
    close;
    sql.clear;
    sql.add('Select * from table');
    sql.add('where StartDate>=:Bdate and EndDate<=:EDate');
    parambyname('Bdate').asdatetime:=Encodedate(Byear,BMonth,BDay);
    parambyname('Edate').asdatetime:=Encodedate(Eyear,EMonth,EDay);
    open;
    end;
      

  3.   

    把SQL语句写成
    year > xxx and year < xxx and ...
    如果是用CHAR来存的话,加上STRTOINT(XXX)就可以了吧
      

  4.   

    SQL 的话 
    select * from 表 where  CONVERT (datetime,'年字段'+'月字段'+'日字段')>2004-01-01
    不过我没试过 一般不会做这变态的表结构:)
    DELPHI也可以实现
    首先给数据集里加一个计算字段  Date型 比如叫 MyDate
    然后
    在数据集的CalcFields里写
    ADODATASET1.fieldbyname('MYDATE').asdatetime:=Encodedate(
    ADODATASET1.fieldbyname('年').asinteger,
    ADODATASET1.fieldbyname('月').asinteger,
    ADODATASET1.fieldbyname('日').asinteger);然后在数据集里根据这个字段作为条件过滤数据
      

  5.   

    select * from  YourTableName a
      where a.year > xxx and a.year < xxx 
        and a.month > XXX and a.month < XXX
        and a.day >xxx and a.day <XXX
      

  6.   

    select * from  YourTableName a
      where a.year between xxx and yyy and 
            a.month between  xxx and yyy and
            a.day between>xxx yyy
      

  7.   

    select * from  YourTableName a
      where a.year between xxx and yyy and 
            a.month between  xxx and yyy and
            a.day between>xxx and yyy少了个and