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; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |