how to get data of current week only in SQL server?

前端 未结 7 1971
逝去的感伤
逝去的感伤 2020-12-29 03:18

I want records from table which stores the current date when a record is inserted with in current week only.

I have tried:

SELECT PId 
,WorkDate 
,Ho         


        
7条回答
  •  星月不相逢
    2020-12-29 03:58

    SET DATEFIRST 1;
        ;With CTE
        AS
        (
        SELECT
        FORMAT(CreatedDate, 'MMMM-yyyy') as Months,
        CASE 
        WHEN YEAR(DATEADD(DAY, 1-DATEPART(WEEKDAY, Min(CreatedDate)), Min(CreatedDate))) < YEAR(Min(CreatedDate))
        THEN FORMAT(DATEADD(YEAR, DATEDIFF(YEAR, 0,DATEADD(YEAR, 0 ,GETDATE())), 0) ,'MMM dd')   + ' - ' + FORMAT(DATEADD(dd, 7-(DATEPART(dw, Min(CreatedDate))), Min(CreatedDate))  ,'MMM dd')
        ELSE
        FORMAT(DATEADD(DAY, 1-DATEPART(WEEKDAY, Min(CreatedDate)), Min(CreatedDate)) ,'MMM dd') + ' - ' + FORMAT(DATEADD(dd, 7-(DATEPART(dw, Min(CreatedDate))), Min(CreatedDate)) ,'MMM dd') 
        END  DateRange,
        Sum(ISNULL(Total,0)) AS Total,
        sum(cast(Duration as int)) as   Duration    
        FROM TL_VriandOPI_Vendorbilling where VendorId=@userID and CompanyId=@CompanyID
        Group By DATEPART(wk, CreatedDate) ,FORMAT(CreatedDate, 'MMMM-yyyy')
        )
        SELECT Months,DateRange,Total,Duration,
        case when DateRange=(select FORMAT(DATEADD(DAY, 1-DATEPART(WEEKDAY, Min(getdate())), Min(getdate())) ,'MMM dd') + ' - ' +
        FORMAT(DATEADD(dd, 7-(DATEPART(dw, Min(getdate()))), Min(getdate())) ,'MMM dd'))
        then 1 else 0 end as Thisweek
        FROM CTE order by Months desc
    

提交回复
热议问题