我有一份报告,比较一年内任何日期范围的年度变化。因此,在我的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日的记录没有被提升。在确定是否应根据闰年添加日期时,设置我之前日期的最简洁方法是什么?
答案 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
重新定位相同的解决方案。
希望它有所帮助。