我正在尝试创建一个将在报告信息中心内使用的查询。查询需要从参数中提取日期,该参数来自仪表板内的日期时间控件。
我遇到的问题是日期时间控件将显示当前日期,或者可以使用下拉日历更改。我需要查询来查看提供的日期并执行一些if语句。
如果提供的日期与当月相同。我需要查询中使用的日期是上个月的最后一天。 ELSE它应该使用所选月份的最后一天。
我尝试了将代码编写到Where子句中的几种变体,但到目前为止还没有取得任何成功。即使只是试图让查询给我上个月的最后一天(下面的代码)也没有用。
任何想法都会受到欢迎。我真的很困惑。
SELECT A.ETLKEY, A.EFFECTIVEDATE, A.ACTUAL,
FROM DBO.View
WHERE (A.EFFECTIVEDATE = (DateAdd("d", -1, CDate(
"01/"+CStr(Format(&EndDate(),"MM/yyyy"))))))
第二次尝试
DECLARE @dtDate DATE
SET @dtDate = &Enddate
--'Month/day/year'
SELECT Case
When @dtDate = '08/01/2016'
-- Last day of previous month, as this month will have no date in it
Then DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,@dtDate),0))
-- Last day of month stated.
Else DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,@dtDate)+1,0))
所有可能在futrue中找到这个有用的人的最终工作代码
DECLARE @dtDate DATETime
SET @dtDate = &Enddate
--'Month/day/year'
SELECT Case
--compares month from parameter to todays month
When DATEPART(mm,@dtDate) = DATEPART(mm,GETDATE())
-- Last day of previous month, as this month will have no date in it
Then DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,@dtDate),0))
-- Last day of month stated.
Else DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,@dtDate)+1,0))
END