我希望我的一些SSRS报告默认为在运行时显示当前财务季度的日期。
我在英国,所以第一季度= 01-APR-2018
至30-JUN-2018
等
我有两个日期参数(SSRS)。对于第一个参数,我使用了以下表达式:
=DateAdd(DateInterval.Quarter, DateDiff(DateInterval.Quarter, CDate("1/1/1900"), Today()), CDate("1/1/1900"))
运行报告时,它默认为01-APR-2018
,这正是我想要的。
但是,我一直无法弄清楚当前季度的最后一天的表达方式。
任何有关如何实现这一目标的想法将不胜感激。
答案 0 :(得分:1)
这是将在您的报告中使用的表达式。
= DATEADD(
DateInterval.Day
, -1
, DATEADD(
DateInterval.Quarter
, DATEPART(DateInterval.Quarter, DateTime.Now )
, DATESERIAL(YEAR(Now), 1, 1)
)
)
如果要从查询中获取默认值,则此处为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)))
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
注意:您必须使用报表服务器上的数据源更新DataSourceReference
。
<?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>