【问题标题】:MDX find last saturday 2 years agoMDX 找到 2 年前的上周六
【发布时间】:2018-01-09 16:48:11
【问题描述】:

我正在尝试编写一个语句,该语句将返回一年和两年前上周六的可比较日期。因此,如果上周六是 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

有什么问题出在哪里的想法吗?我觉得我在这里做得过火了。

谢谢。

【问题讨论】:

  • 您如何定义可比较的星期六?是基于计数,所以您想要往年的第一个星期六?
  • 这个问题实际上让我意识到出了什么问题。我们将其定义为上周六前 52 周的周六。所以去年是 52 周前,而前一年是 104 周前。实施后,它就可以工作了!感谢您的意见!

标签: sql mdx dateadd datepart


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-20
    • 2018-01-27
    • 1970-01-01
    • 2020-08-19
    • 1970-01-01
    相关资源
    最近更新 更多