-2

我是 T-SQL 新手,在这里需要紧急帮助。我正在尝试从给定日期获取周数。

我知道它有一个内置函数,但返回值并不是我想要的。

例如,通过使用 select datepart(wk, '2013-01-07'),它会返回 '2'.. 但实际上它应该返回 '1' 而不是 '2'。

任何想法如何纠正这个问题?

4

4 回答 4

1

您可以使用dy datepart说明符获取dayOfYear数字并将其除以 7:

select (datepart(dy, '2013-01-05') - 1) / 7 + 1;

工作演示

于 2013-09-23T08:28:35.570 回答
0

试试这个

选择日期部分(周,获取日期())

于 2013-09-23T08:30:17.583 回答
0

这取决于您定义第一周的跳数。它总是在同一个工作日开始吗?还是总是从一月一日开始?如果您希望它始终在同一个工作日开始,则使用Set datefirst告诉 T-SQL 您要将哪个工作日定义为一周的开始。如果您希望它始终从 1 月 1 日开始,则只需使用一年中的某一天而不是一周,减去 1,整数除以 7 并加 1。

declare @dat DateTime = getdate()
Select Select (datepart(dy, @dat)-1) / 7 + 1
于 2013-09-23T08:31:36.847 回答
0

尽管记忆犹新,但我相信一年中第一周的 ISO 标准是一年中第一个星期四所在的那一周。这可能可以解释为什么内置函数给出的结果与您需要的不同.

于 2013-09-23T11:35:23.900 回答