MDX在2年前的最后一个星期六找到了

时间:2018-01-09 16:48:12

标签: sql mdx dateadd datepart

我正在努力撰写一份声明,该声明将返回一年和两年前上周六的可比日期。因此,如果上周六是2018-01-06我需要它返回2017-01-07和2016-01-09。以下代码返回2017-01-07(正确)和2016-01-02(不正确)。

见下面的代码:

StrToMember("[Sales Period].[Sales Period].[Week Desc].&
        [" + Format(DateAdd("d", 
                                - DatePart("w", DateAdd("yyyy", -2, Now()), 1), 
                                  DateAdd("yyyy", -2, Now())), 
                                  "yyyy-MM-ddT00:00:00") + 
        "]")
        --returns 2017-01-07        


StrToMember("[Sales Period].[Sales Period].[Week Desc].&
        [" + Format(DateAdd("d", 
                                 - DatePart("w", DateAdd("yyyy", -2, Now()), 1)-7, 
                                   DateAdd("yyyy", -2, Now())), 
                                   "yyyy-MM-ddT00:00:00") + 
        "]")
       -- returns 2016-01-02

任何有问题的想法是什么?我觉得我在这里过度了。

感谢。

1 个答案:

答案 0 :(得分:0)

这是通过使用DateAdd(“ww”, - 52,Now()))和DateAdd(“ww”,-104,Now())来解决的,因为我们对星期六的定义基于滚动52周,而不是1年。