当前季度日期参数SSRS的最后一天

时间:2018-06-20 09:37:51

标签: reporting-services ssrs-2012

我希望我的一些SSRS报告默认为在运行时显示当前财务季度的日期。

我在英国,所以第一季度= 01-APR-201830-JUN-2018

我有两个日期参数(SSRS)。对于第一个参数,我使用了以下表达式:

=DateAdd(DateInterval.Quarter, DateDiff(DateInterval.Quarter, CDate("1/1/1900"), Today()), CDate("1/1/1900"))

运行报告时,它默认为01-APR-2018,这正是我想要的。

但是,我一直无法弄清楚当前季度的最后一天的表达方式。

任何有关如何实现这一目标的想法将不胜感激。

1 个答案:

答案 0 :(得分:1)

SSRS表达式

这是将在您的报告中使用的表达式。

当前季度的最后一天

= DATEADD(
   DateInterval.Day
   , -1
   , DATEADD(
      DateInterval.Quarter
      , DATEPART(DateInterval.Quarter, DateTime.Now )
      , DATESERIAL(YEAR(Now), 1, 1)   
   )
)

T-SQL示例

如果要从查询中获取默认值,则此处为SQL中的公式。这样,您可以在数据库上创建视图并使用该视图,而不必在报表中执行表达式。如果您没有创建视图的权限,则可以仅使用select语句在报表服务器上创建Shared Dataset / .rsd文件。

当前季度的第一天

SELECT [first_quarter_day] = DATEADD(qq, DATEDIFF(qq, 0, GETDATE()), 0)

当前季度的最后一天

SELECT [last_quarter_day] = DATEADD(dd, -1, DATEADD(qq, 1 ,DATEADD(qq, DATEDIFF(qq, 0, GETDATE()), 0)))

query results

查看示例

CREATE VIEW [dbo].[date_defaults]
AS

    SELECT 
      [First_Day_of_Current_Month] = DATEADD(mm, DATEDIFF(mm,0, GETDATE()), 0)
    , [Last_Day_of_Current_Month] = DATEADD(dd, -1, DATEADD(mm, 1, DATEADD(mm, DATEDIFF(mm, 0, GETDATE()), 0)))
    , [First_Day_of_Next_Month] = DATEADD(mm, 1,DATEADD(mm, DATEDIFF(mm, 0, GETDATE()), 0))
    , [Last_Day_of_Previous_Month] = DATEADD(dd, -1,DATEADD(mm, DATEDIFF(mm, 0, GETDATE()), 0))
    , [First_Day_of_Current_Quarter] = DATEADD(qq, DATEDIFF(qq, 0, GETDATE()), 0)
    , [First_Day_of_Previous_Quarter] = DATEADD(qq, DATEDIFF(qq, 0, GETDATE())-1, 0)
    , [Last_Day_of_Current_Quarter] = DATEADD(dd, -1, DATEADD(qq, 1, DATEADD(qq, DATEDIFF(qq, 0, GETDATE()), 0)))
    , [Last_Day_of_Previous_Quarter] = DATEADD(dd, -1, DATEADD(qq, DATEDIFF(qq, 0, GETDATE()), 0))
    , [First_Day_of_Current_Year] = DATEADD(yy, DATEDIFF(yy,0, GETDATE()), 0)
    , [First_Day_of_Previous_Year] = DATEADD(yy, DATEDIFF(yy, 0,DATEADD(yy, -1, GETDATE())), 0)
    , [Last_Day_of_Previous_Year] = DATEADD(dd, -1,DATEADD(yy, DATEDIFF(yy, 0, GETDATE()), 0))
    , [This_Day_Last_Year]  = DATEADD(yy, -1, GETDATE())

GO

共享数据集XML示例

注意:您必须使用报表服务器上的数据源更新DataSourceReference

ssrs project

<?xml version="1.0" encoding="utf-8"?>
<SharedDataSet xmlns="http://schemas.microsoft.com/sqlserver/reporting/2010/01/shareddatasetdefinition" xmlns:rd="http://schemas.microsoft.com/SQLServer/reporting/reportdesigner">
  <DataSet Name="date_defaults">
    <Query>
      <DataSourceReference>Your_DataSource_Here</DataSourceReference>
      <CommandText> SELECT 
      [First_Day_of_Current_Month] = DATEADD(mm, DATEDIFF(mm,0, GETDATE()), 0)
    , [Last_Day_of_Current_Month] = DATEADD(dd, -1, DATEADD(mm, 1, DATEADD(mm, DATEDIFF(mm, 0, GETDATE()), 0)))
    , [First_Day_of_Next_Month] = DATEADD(mm, 1,DATEADD(mm, DATEDIFF(mm, 0, GETDATE()), 0))
    , [Last_Day_of_Previous_Month] = DATEADD(dd, -1,DATEADD(mm, DATEDIFF(mm, 0, GETDATE()), 0))
    , [First_Day_of_Current_Quarter] = DATEADD(qq, DATEDIFF(qq, 0, GETDATE()), 0)
    , [First_Day_of_Previous_Quarter] = DATEADD(qq, DATEDIFF(qq, 0, GETDATE())-1, 0)
    , [Last_Day_of_Current_Quarter] = DATEADD(dd, -1, DATEADD(qq, 1, DATEADD(qq, DATEDIFF(qq, 0, GETDATE()), 0)))
    , [Last_Day_of_Previous_Quarter] = DATEADD(dd, -1, DATEADD(qq, DATEDIFF(qq, 0, GETDATE()), 0))
    , [First_Day_of_Current_Year] = DATEADD(yy, DATEDIFF(yy,0, GETDATE()), 0)
    , [First_Day_of_Previous_Year] = DATEADD(yy, DATEDIFF(yy, 0,DATEADD(yy, -1, GETDATE())), 0)
    , [Last_Day_of_Previous_Year] = DATEADD(dd, -1,DATEADD(yy, DATEDIFF(yy, 0, GETDATE()), 0))
    , [This_Day_Last_Year]  = DATEADD(yy, -1, GETDATE())</CommandText>
    </Query>
    <Fields>
      <Field Name="First_Day_of_Current_Month">
        <DataField>First_Day_of_Current_Month</DataField>
        <rd:TypeName>System.DateTime</rd:TypeName>
      </Field>
      <Field Name="Last_Day_of_Current_Month">
        <DataField>Last_Day_of_Current_Month</DataField>
        <rd:TypeName>System.DateTime</rd:TypeName>
      </Field>
      <Field Name="First_Day_of_Next_Month">
        <DataField>First_Day_of_Next_Month</DataField>
        <rd:TypeName>System.DateTime</rd:TypeName>
      </Field>
      <Field Name="Last_Day_of_Previous_Month">
        <DataField>Last_Day_of_Previous_Month</DataField>
        <rd:TypeName>System.DateTime</rd:TypeName>
      </Field>
      <Field Name="First_Day_of_Current_Quarter">
        <DataField>First_Day_of_Current_Quarter</DataField>
        <rd:TypeName>System.DateTime</rd:TypeName>
      </Field>
      <Field Name="First_Day_of_Previous_Quarter">
        <DataField>First_Day_of_Previous_Quarter</DataField>
        <rd:TypeName>System.DateTime</rd:TypeName>
      </Field>
      <Field Name="Last_Day_of_Current_Quarter">
        <DataField>Last_Day_of_Current_Quarter</DataField>
        <rd:TypeName>System.DateTime</rd:TypeName>
      </Field>
      <Field Name="Last_Day_of_Previous_Quarter">
        <DataField>Last_Day_of_Previous_Quarter</DataField>
        <rd:TypeName>System.DateTime</rd:TypeName>
      </Field>
      <Field Name="First_Day_of_Current_Year">
        <DataField>First_Day_of_Current_Year</DataField>
        <rd:TypeName>System.DateTime</rd:TypeName>
      </Field>
      <Field Name="First_Day_of_Previous_Year">
        <DataField>First_Day_of_Previous_Year</DataField>
        <rd:TypeName>System.DateTime</rd:TypeName>
      </Field>
      <Field Name="Last_Day_of_Previous_Year">
        <DataField>Last_Day_of_Previous_Year</DataField>
        <rd:TypeName>System.DateTime</rd:TypeName>
      </Field>
      <Field Name="This_Day_Last_Year">
        <DataField>This_Day_Last_Year</DataField>
        <rd:TypeName>System.DateTime</rd:TypeName>
      </Field>
    </Fields>
  </DataSet>
</SharedDataSet>
相关问题