Tsql SSRS 2008 R2将一周的第一天更改为周一

Tsql SSRS 2008 R2将一周的第一天更改为周一,tsql,ssrs-2008,ssrs-2008-r2,Tsql,Ssrs 2008,Ssrs 2008 R2,此报表使用向下钻取将数据从顶部按周聚合到天数。现在,我只是从日期中提取日期部分,以便我可以在表上分组,它工作得很好。但是,一周的第一天设置为7,或者星期天,我需要它从1开始,或者星期一。我读过的一个显而易见的解决方案是设置DATEFIRST 1——顺便说一句,当我尝试使用设置时,我收到一条错误消息,说它不受支持 我已经了解到,您可以更改报告的全局设置来执行此操作,但我不知道在何处执行此操作,如果可能的话,我更希望能够在此查询中在本地执行此操作。此外,我还修改了@@DATEFIRST,但它所做的只

此报表使用向下钻取将数据从顶部按周聚合到天数。现在,我只是从日期中提取日期部分,以便我可以在表上分组,它工作得很好。但是,一周的第一天设置为7,或者星期天,我需要它从1开始,或者星期一。我读过的一个显而易见的解决方案是
设置DATEFIRST 1
——顺便说一句,当我尝试使用
设置
时,我收到一条错误消息,说它不受支持

我已经了解到,您可以更改报告的全局设置来执行此操作,但我不知道在何处执行此操作,如果可能的话,我更希望能够在此查询中在本地执行此操作。此外,我还修改了
@@DATEFIRST
,但它所做的只是报告一周的第一天是7

SELECT     DATENAME(week, CAST(Date AS date)) AS week, DATENAME(dw, CAST(Date AS date)) AS day, CONVERT(date, Date, 103) AS date, FROM_NUMBER, DURATION, 
                  TYPE_OF_CALL, ID, DATEPART(dw, CAST(Date - 1 AS date)) AS dayCode
FROM         CallCenterStatsCDR
WHERE     (Date BETWEEN @StartDate AND @EndDate)
GROUP BY DATENAME(week, CAST(Date AS date)), CONVERT(date, Date, 103), DATENAME(dw, CAST(Date AS date)), FROM_NUMBER, DURATION, TYPE_OF_CALL, ID, 
                  DATEPART(dw, CAST(Date - 1 AS date))
ORDER BY Date DESC

datefirst函数将影响服务器上运行的所有进程。能否在查询中添加(dd,1,YourDate)所有日期字段以获得相同的结果?

如果先单独尝试设置日期,会发生什么情况?像这样>>>选择@@DATEFIRST;将日期设置为1;选择@@DATEFIRST;任何地方都不允许使用SET,SQL不会解析优秀的解决方案,谢谢。我把它添加到了我的“周”列中—
DATENAME(周,DATEADD(dd,-1,CAST(日期为日期))