伊斯兰周数

Islamic Week number

我们是一家总部位于英国的公司,我们在迪拜也有另一家分公司。 我一定是遗漏了一些简单的东西,但我如何从 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

试试这个:

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 设置如何,它似乎都产生了预期的结果。