SQL Server,获取一周的日期数

Jon*_*nas 1 sql-server date week-number

我有一个查询来显示付款次数,按 SQL Server 2012 中的周数分组。

SELECT 
    DATEPART(wk, FPP.UPLOAD_DATE) AS "Date by week", 
    COUNT(DISTINCT FPP.ID) AS "Number of Bills")
FROM 
    FACT_PAY_PAYMENT FPP 
GROUP BY 
    DATEPART(wk, FPP.UPLOAD_DATE);
Run Code Online (Sandbox Code Playgroud)

小问题,当我执行此代码时,我收到周数,但我想要一周的开始日期。

例如,现在我收到以下输出:

 Date by week     Number of Bills 
 ---------------------------------
      40                 7
Run Code Online (Sandbox Code Playgroud)

我想要收到的是:

 Date by week     Number of Bills 
 ---------------------------------
 2015-09-28            7
Run Code Online (Sandbox Code Playgroud)

wir*_*ext 5

首先你必须确定一周的第一个日期是什么SELECT @@DATEFIRST;,在我的机器中SundayFirst day of week

DECLARE @dt DATE = '2015-09-08';
SELECT DATEADD(wk,DATEDIFF(wk,7,@dt),6) AS Datebyweek
Run Code Online (Sandbox Code Playgroud)

结果

Datebyweek
2015-09-06 00:00:00.000
Run Code Online (Sandbox Code Playgroud)