【问题标题】:SSRS Default Start/End Dates Return a period of specific datesSSRS 默认开始/结束日期返回特定日期的时间段
【发布时间】:2017-09-05 23:42:20
【问题描述】:

我正在尝试在 SSRS 中编写表达式:

如果今天的 DAY 是 DAY >= 16 日,则返回当前月份的第 1 日到第 15 日

这是我现在的表达,但它不起作用:

开始日期:

=IIF(DAY(TODAY) <= 15, DateAdd(DateInterval.Day, 1-Day(Today), Today), DateAdd(DateInterval.Month, -1, (DateAdd(DateInterval.Day, 16-Day(Today), Today)))),
IIF(DAY(TODAY) >= 16, dateadd("m",0,dateserial(YEAR(Today),MONTH(Today),1)

结束日期:

=IIF(DAY(TODAY) <= 15, DateAdd(DateInterval.Day, -1, DateSerial(Year(Date.Now), Month(Date.Now), 1)),
IIF(DAY(TODAY) >= 16, dateadd(dd,datediff(dd,datepart(dd,getdate()),15),getdate())

【问题讨论】:

    标签: date reporting-services parameters expression default


    【解决方案1】:

    过去一周我只需要做类似的事情......

    --StartDate, if current day is more than 16, set to 1, else 16
    =iif(DatePart("d",Today) >= 16,  DateSerial(Year(Today), Month(Today), "1").AddMonths(-1), DateSerial(Year(Today), Month(Today),"16").AddMonths(-1))
    
    --EndDate, if current day is more than 16 set to 15, else month end
    =iif(DatePart("d",Today) >= 16,  DateSerial(Year(Today), Month(Today), "15").AddMonths(-1), DateSerial(Year(Today), Month(Today),"1").AddDays(-1))
    

    【讨论】:

      【解决方案2】:

      使用以下表达式

      开始日期:

      =
      Iif ( Day(Today())>15
      , DateAdd( "d", -Day(Today())+1, Today())
      , DateAdd("d", -Day(Today())+16, DATEADD("m", -1,Today()))
      )
      

      结束日期:

      =
      Iif ( Day(Parameters!DateParam.Value)>15
      , DateAdd("d", -Day(Today())+15 , Today())
      , DateAdd("d", -Day( Today()) ,  Today())
      )
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-03-21
        • 2016-05-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-01-05
        相关资源
        最近更新 更多