我们是一家总部设在英国的公司,我们还在迪拜设有另一家分店。 我必须遗漏一些简单的东西,但我如何从SQL服务器(2008 R2)获得伊斯兰周数 - 服务器位于英格兰,所以我们不能做太多改变。
我已经创建了以下测试查询来演示问题,(名为" WhatWeWant"我从周数中减去-1的列是为了演示此示例中所需的答案而不是修复)
DATEFIRST only affects the ww column and not the ISO_WEEK column.
SELECT
[xdate]
, DATEPART(ww, xdate) as ww
, DATEPART(ISO_Week, xdate) as iso_week
, DATEPART(ww, xdate) -1 as whatWeWant
FROM [test].[dbo].[testing]
结果:
xdate ww iso_week whatWeWant 2016-11-18 00:00:00.0000000 47 46 46 2016-11-19 00:00:00.0000000 47 46 46 2016-11-20 00:00:00.0000000 48 46 47 2016-11-21 00:00:00.0000000 48 47 47 2016-11-22 00:00:00.0000000 48 47 47 2016-11-23 00:00:00.0000000 48 47 47 2016-11-24 00:00:00.0000000 48 47 47 2016-11-25 00:00:00.0000000 48 47 47 2016-11-26 00:00:00.0000000 48 47 47 2016-11-27 00:00:00.0000000 49 47 48 2016-11-28 00:00:00.0000000 49 48 48 2016-11-29 00:00:00.0000000 49 48 48
答案 0 :(得分:2)
试试这个:
SELECT
[xdate]
, DATEPART(ww, xdate) as ww
, DATEPART(ISO_Week, xdate) as iso_week
, DATEPART(ww, xdate) -1 as whatWeWant
, DATEPART(ISO_WEEK, DATEADD(DAY,1,xdate)) as whatIPropose
FROM [test].[dbo].[testing]
无论DATEFIRST设置如何,它似乎都会产生预期的结果。