【问题标题】:SSRS BIDS expression language Month Part from Current dateSSRS BIDS 表达式语言 Month Part from Current date
【发布时间】:2012-04-20 09:38:47
【问题描述】:

BIDS 中,我需要一个expression 来获取当前日期负1 个月的日期的YEAR 部分。

例如今天的日期是20/04/2012 所需的表达式将返回:

2012

如果今天的日期是 05/01/2012,则 desure 表达式将返回:

2011

【问题讨论】:

    标签: sql-server reporting-services ssrs-2008 bids ssrs-expression


    【解决方案1】:

    所以规则是:

    • 如果是 1 月 -> 去年返回
    • else -> 今年返回

    对吗?

    =IIf(Datepart("m", Fields!date.Value)=1,Datepart("YYYY", Fields!date.Value)-1,Datepart("YYYY", Fields!date.Value))
    

    【讨论】:

      【解决方案2】:
      SET ANSI_NULLS ON
      GO
      SET QUOTED_IDENTIFIER ON
      GO
      
      CREATE FUNCTION YearRollOver 
      (
      
          @dDateIn DATETIME
      )
      RETURNS DATETIME
      
      AS
      
      BEGIN
      
          declare @dDATEOut  DATETIME
      
      
          SELECT @dDATEOut = CAST(CAST(YEAR(@dDateIn)+1 AS varchar)+'/'+CAST(MONTH(@dDateIn) as varchar)+'/'+cast(DAY(@dDateIn) as varchar)  AS DATETIME)
      
          RETURN @dDATEOut
      
      END
      GO
      

      试试这个功能。只需将要增加的日期传递给它,它就会将您的 YEAR 增加 1。

      如果你不开心,记得关闭线程。

      干杯

      苹果机

      【讨论】:

      • 他想要 SSRS 中的函数,而不是 SQl Server 中的函数。
      • 你的函数有几个问题:首先,它没有给 OP 他想要的东西:如果不是 1 月,那么今年是最后一个。你的总是给明年。并且将日期时间解析为字符串以在 SQL 中进行日期操作并不是很好:对于您展示的功能,您为什么不直接 DATEADD(year, 1, @dDateIn) 获得相同的结果?
      【解决方案3】:

      如果您要做很​​多事情,我会创建一个函数来执行此操作,该函数将提取年、月和日 - 每一个都有自己的 var。增加年份,将日期重建为字符串并将字符串转换为 DATE。如果您需要帮助,请告诉我。

      苹果机

      【讨论】:

        猜你喜欢
        • 2022-12-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多