Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 伊斯兰周编号_Sql_Sql Server_Week Number - Fatal编程技术网

Sql 伊斯兰周编号

Sql 伊斯兰周编号,sql,sql-server,week-number,Sql,Sql Server,Week Number,我们是一家总部设在英国的公司,在迪拜还有另一家分公司。 我一定错过了一些简单的东西,但我如何从SQL server(2008 R2)中获取伊斯兰周编号?该服务器位于英国,因此我们不能做太多更改 我创建了以下测试查询来演示这个问题(名为“WhatWeWant”的列,其中我从周数中减去-1是为了演示本示例中所需的答案,而不是修复) 结果: xdate ww iso_week whatWeWant 2016-11-18 00:00:00.0000000

我们是一家总部设在英国的公司,在迪拜还有另一家分公司。 我一定错过了一些简单的东西,但我如何从SQL server(2008 R2)中获取伊斯兰周编号?该服务器位于英国,因此我们不能做太多更改

我创建了以下测试查询来演示这个问题(名为“WhatWeWant”的列,其中我从周数中减去-1是为了演示本示例中所需的答案,而不是修复)

结果:

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 你想要什么 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试试这个:

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

您使用的是哪个版本的SQL Server?我很困惑。ISO周与伊斯兰周相同吗?@GordonLinoff
2016-11-27 00:00:00.0000000 49 47 48
在示例中,它与您在行中看到的不同。ISO周产生的结果似乎与
DATEPART(ww,xdate)-1
您使用的SET DATEFIRST 1相同。然而,Simon说2016年11月20日的预期结果是47(如果使用SET DATEFIRST 1,则只会将WhatWeWant列更改为他真正想要的内容以外的内容)。iso_周几乎是我想要的,只是从周一开始,伊斯兰周从周日开始,因此在20日的示例中可以看到问题。必须有一个简单的方法来做到这一点!谢谢,简单整洁solution@Simon这些年真的有用吗?例如,2015年1月1日是星期四。ISO周从周一开始到周日结束,从周一开始的一周。2014年12月29日太阳报。2015年1月4日属于2015年,是2015年的第一周。但在阿拉伯大会上,“同样”的一周从太阳开始。2014年12月28日至2015年1月3日星期六。他们真的会把2015年的第一周称为迪拜吗?更自然的是,它属于2014年,或者一周中的两个“部分”有不同的周数。2026年,这一年将再次从周四开始。
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]