在 SQL Server 中使用 DATEPART 时出现错误的周数
我遇到了在 SQL Server 2000 中返回第 7 周结果的问题。
select datepart(ww, '20100208')
但是 08.02.2010 应该是 >第 6 周根据 ISO 8601 规范!这导致交货周计算出现问题。
我应该怎样做才能根据 ISO 8601 获取周数值?
I've got the problem that
select datepart(ww, '20100208')
is returning as result week 7 in SQL Server 2000. But 08.02.2010 should be week 6 according to the ISO 8601 specification! This is causing problems in delivery week calculations.
What should I do to get week number values according to ISO 8601?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以在 SQL 2008 中非常轻松地执行此操作,因为它现在支持 isoww 作为第一个日期部分参数。然而,这在 SQL 2000(或 2005)中并不存在。 这篇文章中有一个函数它会在 SQL 2000/2005 中为您完成此操作。
万一博客离线了,这里有这个功能。前往帖子了解有关 ISO 和非 ISO 周的更多信息。
You can do this within SQL 2008 very easily as it now supports isoww as the first datepart argument. However, this wasn't in SQL 2000 (or 2005). There is a function in this article which will do it for you in SQL 2000/2005.
In case the blog goes offline, here is the function. Go to the post to learn more about ISO and non-ISO weeks.
一种简单的方法是使用
isowk
而不是wk
,如下所示:就像提到的 @MicSim 和 @AdaTheDev 一样,这仅适用于较新的版本 (>= 2008)。
One easy way to do this is to use
isowk
instead ofwk
as shown here:Like @MicSim and @AdaTheDev mentioned, this will only work in newer versions (>=2008).