更改参数提供的查询中使用的日期

时间:2016-07-29 09:53:21

标签: sql sql-server

我正在尝试创建一个将在报告信息中心内使用的查询。查询需要从参数中提取日期,该参数来自仪表板内的日期时间控件。

我遇到的问题是日期时间控件将显示当前日期,或者可以使用下拉日历更改。我需要查询来查看提供的日期并执行一些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

0 个答案:

没有答案