【问题标题】:SSRS 2008 R2 Change First Day of the Week to MondaySSRS 2008 R2 将一周的第一天更改为星期一
【发布时间】:2014-01-14 18:11:10
【问题描述】:

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

我读过您可以更改报告的全局设置来执行此操作 - 但我不知道在哪里并且希望能够在此查询中在本地执行此操作(如果可能)。此外,我还修改了@@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 时会发生什么?像这样 >>> SELECT @@DATEFIRST;设置日期优先 1;选择@@DATEFIRST;
  • SET 不允许在任何地方,SQL 不会解析

标签: tsql ssrs-2008 ssrs-2008-r2


【解决方案1】:

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

【讨论】:

  • 优秀的解决方案,谢谢。我将此添加到我的周专栏 - DATENAME(week, DATEADD(dd, - 1, CAST(Date AS date)))
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-01-18
  • 1970-01-01
  • 1970-01-01
  • 2019-08-30
  • 2013-06-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多