【问题标题】:Correct week number from datepart [duplicate]日期部分中的正确周数[重复]
【发布时间】:2016-01-05 12:29:47
【问题描述】:

代码返回:

set datefirst 1
select datepart(wk,'2016-01-01')  - 1

但是

set datefirst 1
select datepart(wk,'2015-12-31')

返回..53 :/

但事实上 - 这是同一周。本周属于 2015 的天数较多,因此对于该特定周的任何日期,它都应该是“53”或“1”(相同的值)。如果不建立专门的程序来分析日期和调整返回值,这是否可以实现?

我使用 SQL Server 2005

【问题讨论】:

  • 实际上,根据大多数人对周数的定义,这不是同一周。我预计 2016 年的第 53 周将在大约 360 天后到来

标签: sql-server week-number datepart


【解决方案1】:

你可能想要iso_week:

set datefirst 1
select datepart(iso_week,'2015-12-31')    --53
select datepart(iso_week,'2016-01-01')    --53

LiveDemo

编辑:

看起来iso_week 支持SQL Server 2008+

是否可以在不建立专门程序的情况下实现这一点 分析日期并调整返回值?

可能你需要编写自定义代码来计算它。

【讨论】:

  • hmm .. 这就是我尝试过的,但我收到消息:Msg 155, Level 15, State 1, Line 1 'iso_week' 不是公认的日期部分选项......知道为什么?
猜你喜欢
  • 2018-01-15
  • 1970-01-01
  • 2014-04-21
  • 1970-01-01
  • 2017-09-19
  • 1970-01-01
  • 2012-06-24
  • 2012-09-06
相关资源
最近更新 更多