无法使用mdx中的vba函数从日期参数中检索月份

时间:2014-11-21 17:56:13

标签: sql oracle mdx msdn mdxstudio

我试图通过使用:

从参数化日期检索月份
 vba!month(${parDate}) or

 vba!datePart(m,${parDate}) or

 vba!format(${parDate},'mmm')

以上都不起作用。您可以指导,做到这一点的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

(尝试大写'MM'而不是'mmm' - 甚至'mm'是错误的,因为它会查找分钟而不是几个月)

这个问题和答案着眼于使用日期: Changing a date format to a shorter date

MSDN是vba中可用于解决日期问题的mdx功能的一个很好的参考。目前的链接在这里: http://msdn.microsoft.com/en-us/library/hh510163.aspx

我假设您有一个日期维度,并且想要创建一个计算度量,该度量返回一个月份的数值。
使用AdWks我可以执行以下操作:

WITH 
  MEMBER [Measures].[DateValue] AS 
    [Date].[Calendar].CurrentMember.MemberValue 
  MEMBER [Measures].[DateKey] AS 
    [Date].[Calendar].CurrentMember.Member_Key 
  MEMBER [Measures].[DateMONTH] AS 
    Mid
    (
      [Measures].[DateKey]
     ,5
     ,2
    ) 
SELECT 
  {
    [Measures].[DateValue]
   ,[Measures].[DateKey]
,[Measures].[DateMONTH]
  } ON 0
 ,Order
  (
    {
      Exists
      (
        [Date].[Date].MEMBERS
       ,[Date].[Calendar Year].&[2010]
      )
    }
   ,[Date].[Calendar].CurrentMember.MemberValue
   ,BDESC
  ) ON 1
FROM [Adventure Works];

但也许你只想玩今天的日期并提取月份:

WITH 
MEMBER [Measures].[DateValue] AS 
    [Date].[Calendar].CurrentMember.MemberValue 
  MEMBER [Measures].[TodayKey] AS 
    format(Now(),'yyyMMdd')
  MEMBER [Measures].[TodayMONTH] AS 
    Mid
    (
      [Measures].[TodayKey]
     ,5
     ,2
    ) 
SELECT 
  {
    [Measures].[DateValue]
   ,[Measures].[TodayKey]
,[Measures].[TodayMONTH]
  } ON 0
 ,Order
  (
    {
      Exists
      (
        [Date].[Date].MEMBERS
       ,[Date].[Calendar Year].&[2010]
      )
    }
   ,[Date].[Calendar].CurrentMember.MemberValue
   ,BDESC
  ) ON 1
FROM [Adventure Works];