SQL查询:从参数日期起28天到参数日期后56天的返回值

时间:2019-04-07 23:51:13

标签: sql sql-server tsql datediff

我有一个查询,该查询使我可以按事件ID返回从参数日期(@STARTDATE)到前28天发生的事件数。我希望能够返回过去28天发生的事件数。

COUNT (DISTINCT (CASE when EventID between  DATEADD(YEAR,-0,DATEADD(DAY, DATEDIFF(DAY, 0, @STARTDATE), -28)) and DATEADD(Year,-0,@STARTDATE) then EVentID END)) TwentyEightDays

我需要能够运行类似的查询,其中EVENTID计数从@STARTDATE的29天到@STARTDATE之后的56天开始。

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

要计算从28天到给定日期的事件,我将使用:

COUNT(DISTINCT CASE WHEN eventdate >= DATEADD(day, -28, @StartDate) AND
                         eventdate <= @startdate
                    THEN EventId
               END) as TwentyEightDays

在29天到56天之后:

COUNT(DISTINCT CASE WHEN eventdate >= DATEADD(day, 29, @StartDate) AND
                         eventdate <= DATEADD(day, 56, @StartDate)
                    THEN EventId
               END)

注意:这假设您有一个有关日期的列。我怀疑是EventId

答案 1 :(得分:0)

数字是相反的顺序,但此查询有效:

COUNT(事件日期> = DATEADD(天,-56,@ StartDate)时的不同情况)并且                          eventdate <= DATEADD(day,-29,@StartDate)                          然后EventId结束)

感谢Gordon的帮助!