我用的是access数据库,数据库结构如下:                 
                申请号  申请日期   申请人
                 12     2001-5-1    张三
                 25     1990-2-4    王二
                 23     2004-2-29   毛五
我想通过查询取得今年和申请日同月同日的日期和当前日期的差距的天数,比如2001-5-1对应今年的2005-5-1和今天相差的天数。别的情况都没问题,就是数据如果出现闰年的2-29日,比如2004-2-29就有问题了,因为2005年2月没有29日。因为每条记录都有一个申请日期,所以我希望用sql语句处理,不想全部得到后在delphi里面处理。我写的代码如下:
with adoquery3 do
begin
  close;
  sql.Clear;
  sql.Add('select *,datediff("d",cdate(str(year(date()))+"-"+str(month(申请日))+"-"+str  (day(申请日))),date()) as 天数 from deppatents');
  open;
谁能想个好的方法把这个问题给我解决了,我所有的分都给他!

解决方案 »

  1.   

    "不想全部得到后在delphi里面处理"是什么意思?看不出这个和闰年有什么关系,datediff本身应该没问题啊。
      

  2.   

    其实在Delphi可能好做点:
    function GetTime(N:DWord): string;
    var
      BeginTime:TDateTime;
      EndTime: TDateTime;
    begin
      BeginTime:=EncodeDateTime(1982,3,4,0,0,0,0);
      EndTime:=EncodeDateTime(now);
      再相减,再计算出来 
     end;
      

  3.   

    分类处理!
    区分是否为闰年,闰年,按楼主方式处理;不是闰年,非yyy-2-29的记录得到结果1,yyyy-2-29改为yyyy-2-28,再舆今天比较得到结果2,合并(union)结果1和结果2便是非闰年的结果。