使用DateAdd确定SSRS闰年

时间:2017-03-07 20:45:57

标签: sql reporting-services

我有一份报告,比较一年内任何日期范围的年度变化。因此,在我的Reporting Services报告中,我有两个用户提供的参数@StartDate和@EndDate。我在前一年也有两个隐藏参数(@PriorStartDate,@ PriorEndDate),默认值是使用这样的表达式以编程方式确定的。

=DateAdd(DateInterval.Year,-1,Parameters!StartDate.Value)

当2/1 / 17-2 / 28/17生成之前的日期为2/1 / 16-2 / 28/16时,我遇到了一个问题。不幸的是,由于闰年,2016年2月29日的记录没有被提升。在确定是否应根据闰年添加日期时,设置我之前日期的最简洁方法是什么?

2 个答案:

答案 0 :(得分:0)

我们在使用此功能的数据集中使用参数。

示例

$

功能

select @lastYearBegin =  dbo.ithc_DateAdd('YEAR', -1, @relativeFromDate)
select @lastYearEnd = dbo.ithc_DateAdd('YEAR', -1, @relativeToDate)

答案 1 :(得分:0)

您可以在计算上一年的日期之前检查年份是否为飞跃。因此对于@StartDate来说就是。

=IIF(
(((Parameters!StartDate.Value.Year - 1) Mod 4 = 0 and
(Parameters!StartDate.Value.Year - 1) Mod 100 <> 0) or
(Parameters!StartDate.Value.Year - 1) Mod 400 = 0) and
 Parameters!StartDate.Value.Month = 2 and Parameters!StartDate.Value.Day = 28,
Parameters!StartDate.Value.AddYears(-1).AddDays(1),
Parameters!StartDate.Value.AddYears(-1)
)

@EndDate重新定位相同的解决方案。

希望它有所帮助。