伊斯兰周数

时间:2016-11-21 12:55:53

标签: sql sql-server 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

1 个答案:

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