我需要获取某些日期集的周数。例如,对于 2016 年 1 月,它应该类似于:
[Week Number]
53 <--- for dates from Jan 1 to Jan 2
1 <--- for dates from Jan 3 to Jan 9
2 <--- for dates from Jan 10 to Jan 16
... <--- etc.
Run Code Online (Sandbox Code Playgroud)
如您所见,一周应该从星期日开始。我使用以下函数来设置开始日期:
SET DATEFIRST 7
Run Code Online (Sandbox Code Playgroud)
这是获取周数的一个:
DATEPART(ISOWK, SOME_DATE)
Run Code Online (Sandbox Code Playgroud)
但我注意到这DATEFIRST不会影响ISOWK使用时的结果 - 周总是从星期一开始。
那么,我做错了什么?谢谢你!
更新:
我做了一个功能,看起来效果很好:
CREATE FUNCTION [dbo].[GetWeekNumber]
(
@date as DATETIME,
@offset as INT
)
RETURNS NVARCHAR(100)
BEGIN
DECLARE @weekNumber as int
DECLARE @year as …Run Code Online (Sandbox Code Playgroud)