SSRS 返回不正确的 WW
SSRS Returning incorrect WW
我有一个 SSRS 报告 (2008R2 3.0),它使用 YYYYWW 格式的工作周参数过滤器。 2018 年,根据 ISO 标准 (source) 有 52 个工作周。
对于默认参数值我select最后WW使用下面的公式:
DATEPART(DateInterval.Year, DATEADD("d", -7, now())) & FORMAT(DATEPART(DateInterval.WeekOfYear, DATEADD("d", -7, now())), "00")
出于某种奇怪的原因,return编辑了 201853
。据我了解,给定 运行 是 20180106
.
的日期应该是 201852
我知道在 T-SQL 中我可以使用 ISO_WEEK
定义 return 类型但是在 SSRS 中是否有 DateInterval 的等价物?
简化:
DATEPART(DateInterval.WeekOfYear, DATEADD("d",-7,now()))
Returns 53 instead of 52 when ran from 201801-201807.
知道为什么这是 return 错误的 WeekOfYear 值吗?
我认为这可能是由于您的服务器上的区域一周的第一天设置所致。
如果你的一周的第一天是星期六,那么2018年有53周。你可以在SQL服务器中使用DATEFIRST设置来设置一周的第一天。
使用 SELECT @@DATEFIRST
确定您的服务器设置。
此示例代码将显示差异。
SET DATEFIRST 7
SELECT @@DATEFIRST
SELECT DATEPART(WEEK, '2018-12-30')
SET DATEFIRST 1
SELECT @@DATEFIRST
SELECT DATEPART(WEEK, '2018-12-30')
对于您的查询,您可能需要使用 SET DATEFIRST 1
将一周的第一天设置为星期日。
我有一个 SSRS 报告 (2008R2 3.0),它使用 YYYYWW 格式的工作周参数过滤器。 2018 年,根据 ISO 标准 (source) 有 52 个工作周。
对于默认参数值我select最后WW使用下面的公式:
DATEPART(DateInterval.Year, DATEADD("d", -7, now())) & FORMAT(DATEPART(DateInterval.WeekOfYear, DATEADD("d", -7, now())), "00")
出于某种奇怪的原因,return编辑了 201853
。据我了解,给定 运行 是 20180106
.
201852
我知道在 T-SQL 中我可以使用 ISO_WEEK
定义 return 类型但是在 SSRS 中是否有 DateInterval 的等价物?
简化:
DATEPART(DateInterval.WeekOfYear, DATEADD("d",-7,now()))
Returns 53 instead of 52 when ran from 201801-201807.
知道为什么这是 return 错误的 WeekOfYear 值吗?
我认为这可能是由于您的服务器上的区域一周的第一天设置所致。
如果你的一周的第一天是星期六,那么2018年有53周。你可以在SQL服务器中使用DATEFIRST设置来设置一周的第一天。
使用 SELECT @@DATEFIRST
确定您的服务器设置。
此示例代码将显示差异。
SET DATEFIRST 7
SELECT @@DATEFIRST
SELECT DATEPART(WEEK, '2018-12-30')
SET DATEFIRST 1
SELECT @@DATEFIRST
SELECT DATEPART(WEEK, '2018-12-30')
对于您的查询,您可能需要使用 SET DATEFIRST 1
将一周的第一天设置为星期日。