当前季度日期参数 SSRS 的最后一天
Last day of current quarter date parameter SSRS
我希望我的一些 SSRS 报告在 运行.
时默认显示当前财政季度的日期
我在英国,所以第 1 季度 = 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
,这就是我想要的。
然而,我一直无法想出一个表达来度过当前季度的最后一天。
任何关于如何实现这一点的想法都将不胜感激。
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)))
查看示例
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
。
<?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>
我希望我的一些 SSRS 报告在 运行.
时默认显示当前财政季度的日期我在英国,所以第 1 季度 = 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
,这就是我想要的。
然而,我一直无法想出一个表达来度过当前季度的最后一天。
任何关于如何实现这一点的想法都将不胜感激。
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)))
查看示例
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
。
<?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>