我想确保我做对了。我的报告的这一部分已设置为默认当前的MTD。如果用户更改结束日期
,我需要做的是将报告设置为MTD我遇到的问题是使用IF Month(@EndingDate)
检查日期,如果不是当前月份,则使用结束日期,然后返回到月初。在我进入2011年之前,它运行良好。所以我使用IF Year(@EndingDate)
:
Declare @startdate datetime
Declare @enddate datetime
--Declare @EndingDate datetime
--set @EndingDate = '11-15-2011'
IF Year(@EndingDate) = DATEADD(year,DATEDIFF(year,0, @EndingDate),0)
BEGIN
set @startdate = dateadd(month, datediff(month, 0, dateadd(day, datediff(day, 1, getdate()), 0)), 0)--BEGINNING OF CURRENT MONTH
set @enddate = dateadd(day, datediff(day, 0, getdate()), 0)--THROUGH CURRENT MONTH (TODAY)
END
ELSE
IF Year(@EndingDate) < DATEADD(year, DATEDIFF(year, 0, GetDate())+1, 0)-1
BEGIN
set @startdate = dateadd(m,datediff(m,0, @EndingDate),0)--Beginning of Month from @Enddate
set @enddate = @EndingDate
END
因此,您可以看到我已将其切换为检查结束日期年份是否与今年匹配,然后根据该数据获取数据。
这是一种合乎逻辑的方法吗?我现在的问题是,今年我得到了所有正确的数据但是当我回到去年时,我错过了某些工厂的数据。我检查了一份不同的报告,每个工厂都应该有数据,所以我想确保我的日期比较设置正确。
答案 0 :(得分:1)
我不确定你到底想要做什么,但我认为改变幕后的日期对用户来说可能具有欺骗性,并且可能会让你更加头疼。您应该只获取他们选择的日期的数据。您可以使用下面的表达式轻松地在RS报告中将默认日期设置为月份开始日期。通过这种方式,用户可以看到他们期待的内容,而不是在幕后生成的日期。
月开始日期
=Now.AddDays(-Today().Day + 1).Date