比如说,今年的最后一周有2天,包含了明年的5天。以下表为szdj,包括统计字段金额jin,日期型字段riqi。目的是按周统计金额,条件是查询周的值和年的值。把时间now调到1月2日,跨年度的时候周的值还是53,但年的值却变了,这样没法统计那周的值呀select sum(jin) from szdj where datepart("ww",riqi,2,3)=datepart("ww",now,2,3) and year(riqi)=year(now)

解决方案 »

  1.   

    你需要的是 now 的 本周第一天的求法
    然后,+7 就是两个时间范围了。
    我见过,但是不会。帮你顶。
      

  2.   

    ●function WeeksBetween(const ANow, AThen: TDateTime): Integer;描述: 
    根据两个TDateTime类型的日期时间参数ANow和AThen,WeeksBetween函数将得到这两个时间在 
    星期上的差数。如果差数不足一个星期,则忽略掉。●function WeekSpan(const ANow, AThen: TDateTime): Double;描述: 
    根据两个TDateTime类型的日期时间参数ANow和AThen,WeeksBetween函数将得到这两个时间在 
    星期上的差数。如果差数不足一个星期,则WeekSpan函数不会忽略掉。 
    注意:此函数的返回类型为 Double
      

  3.   

    我想了想,分成2部分相加求和,再添加一个year字段
    if
    星期数>50和月份=1月
    :year=year(now)-1
    else
    :year=year(now)
    select sum(jin) from szdj where datepart("ww",riqi,2,3)=datepart("ww",now,2,3) and year(新字段)=:year不知道怎么样,或者还能有更好的方法,不用加字段的吗?delphi的week函数是什么
      

  4.   

    能给个例子吗?实在是想不明白啊。这个函数下如何sum求和?
      

  5.   

    实在是不明白函数的用法呀,就算得到日期差又有什么用呢?能给个提示吗?如果要统计这周的金额,adoquery的sql应该怎么写呢?
      

  6.   

    有了周一和周末的日期值,还不能计算出该周的统计金额吗,用下面这个函数可以求出任意一个日期值是星期几
    function DayOfWeek(Date: TDateTime): Integer;描述: 
    按照给定的TDateTime类型的参数Date,DayOfWeek 函数得到一周中的第几天,从1到7。 
    这里 星期日 是一周的第一天,而 星期六 是第七天
      

  7.   

    每年的最后一周跨度时间长短都不一样呀,我不能输入日期控制的呀。如果要做个周今年统计,能有办法自动识别跨年度的周的开始与最后吗?主要是SQL该怎么写,晕啊
      

  8.   

    求出跨年度的周的开始与最后日期值,再写SQL语句
      

  9.   

    //这个函数用于求出任意一天的星期一和星期日所对应的日期值
    procedure GetWeekStartAndEnd(ADay:TDatetime;var StartDay,EndDay:TDateTime);
    begin
    StartDay:=ADay-DayOfTheWeek(ADay)+2;//得到星期一
    EndDay:=ADay+(8-DayOfTheWeek(ADay));//得到星期日
    end;procedure TForm1.Button1Click(Sender: TObject);
    var
    a,b:TDateTime;
    begin
    GetWeekStartAndEnd(date,a,b);
    showmessage('周一是:'+datetimetostr(a)+'  周日是:'+datetimetostr(b));
    end;