0

我有以下代码:

SELECT COUNT(INTERVIEW_ID) 
FROM Interviews AS i INNER JOIN CVsSent AS cvt ON i.CVSENT_ID = cvt.CVSENT_ID  
WHERE cvt.EMP_ID = e.EMP_ID 
AND (i.DATE_TIME >= DATEADD(day, DATEDIFF(day, 0, GETDATE()), 0) 
AND i.DATE_TIME < DATEADD(day, DATEDIFF(day, 0, GETDATE()), 1)))
AS INTERVIEW_COUNT_DAY

选择今天的计数。我需要一个查询来选择本周的计数,从周日(第 1 天)开始,到周六(第 7 天)结束,而不是过去 7 天。这可能吗?

4

2 回答 2

2

试试这个——

DECLARE 
      @FirstDayOfWeek DATETIME
    , @LastDayOfWeek DATETIME

SELECT 
      @FirstDayOfWeek = DATEADD(wk, DATEDIFF(wk, 6, GETDATE()), 6)
    , @LastDayOfWeek = DATEADD(wk, DATEDIFF(wk, 5, GETDATE()), 5)

SELECT 
      INTERVIEW_COUNT_DAY = COUNT(INTERVIEW_ID)
    , DATEPART(weekday, DATE_TIME)
FROM dbo.Interviews i 
JOIN dbo.CVsSent cvt ON i.CVSENT_ID = cvt.CVSENT_ID  
WHERE cvt.EMP_ID = e.EMP_ID 
    AND (i.DATE_TIME >= @FirstDayOfWeek AND i.DATE_TIME < @LastDayOfWeek)
GROUP BY DATEPART(weekday, DATE_TIME)

更新:

DECLARE @PrevWeek DATETIME = DATEADD(DAY, -7, GETDATE())

DECLARE
      @FirstDayOfPrevWeek DATETIME = DATEADD(wk, DATEDIFF(wk, 6, @PrevWeek), 6)
    , @LastDayOfPrevWeek DATETIME = DATEADD(wk, DATEDIFF(wk, 5, @PrevWeek), 5)

SELECT @FirstDayOfPrevWeek, @LastDayOfPrevWeek
于 2013-04-29T09:26:45.613 回答
1

试试这个:
对于第一周的“星期天”使用:

DATEADD(Week, DATEDIFF(WEEK, '19000101', '29-Apr-2013'), '19000101') - 1 

和上周的最后一天“星期六”使用:

DATEADD(WEEK, DATEDIFF(WEEK, '19000101', '29-Apr-2013') + 1, '19000101') - 2
于 2013-04-29T09:28:46.227 回答