加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql-server-2005 – SQL Server 2005中的Isoweek

发布时间:2020-12-12 16:33:58 所属栏目:MsSql教程 来源:网络整理
导读:在SQL Server 2008中,isoweek可以找到: SELECT datepart(iso_week,getdate()) 在SQL Server 2008之前,没有内置函数来查找isoweek. 我一直在搜索高低的语法来找到SQL Server 2005的用户定义的iso_week.我发现了很多解决方案.不喜欢我发现的任何解决方案,其中
在SQL Server 2008中,isoweek可以找到:
SELECT datepart(iso_week,getdate())

在SQL Server 2008之前,没有内置函数来查找isoweek.

我一直在搜索高低的语法来找到SQL Server 2005的用户定义的iso_week.我发现了很多解决方案.不喜欢我发现的任何解决方案,其中大多数没有工作,而且他们太久了.

由于问题很旧,我期望这个问题已经耗尽,并且找到了最好的解决方案.我无法找到一个好的方法.

我写了一个解决方案,我稍后再发贴.但在我做之前,我想确保没有人能匹配我写的解决方案.

我希望赚取自学习者的徽章.我敦促人们为这个古老的问题找到最好的答案.

在给人们找到一个很好的解决方案的机会之后,我将发布我的答案.

解决方法

这是一个类似于你的方法,它也依赖于本周的星期四.但最终它使用的日期不同.

>获取(ISO)周的星期四的日期.

您自己的解决方案使用已知星期四的硬编码日期.或者,本周的星期四可以在@@ DATEFIRST的帮助下找到:

SELECT Th = DATEADD(DAY,3 - (DATEPART(WEEKDAY,@date) + @@DATEFIRST - 2) % 7,@date)

(我没有为正确的配方挣扎太多,因为对我而言是already known)
获取星期四的一天:

SELECT DY = DATEPART(DAYOFYEAR,Th)

>用这个号码找出这样的一周:

SELECT ISOWeek = (DY - 1) / 7 + 1

以下是单个语句中的以上计算:

SELECT ISOWeek = (DATEPART(DAYOFYEAR,Th) - 1) / 7 + 1
FROM (
  SELECT Th = DATEADD(DAY,@date)
) s;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读