我用的是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;
谁能想个好的方法把这个问题给我解决了,我所有的分都给他!
申请号 申请日期 申请人
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;
谁能想个好的方法把这个问题给我解决了,我所有的分都给他!
function GetTime(N:DWord): string;
var
BeginTime:TDateTime;
EndTime: TDateTime;
begin
BeginTime:=EncodeDateTime(1982,3,4,0,0,0,0);
EndTime:=EncodeDateTime(now);
再相减,再计算出来
end;
区分是否为闰年,闰年,按楼主方式处理;不是闰年,非yyy-2-29的记录得到结果1,yyyy-2-29改为yyyy-2-28,再舆今天比较得到结果2,合并(union)结果1和结果2便是非闰年的结果。