小编Eug*_*ich的帖子

SQL Server:使用带 ISOWK 参数的 DATEPART 将一周的第一天更改为星期日

我需要获取某些日期集的周数。例如,对于 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)

sql t-sql sql-server sql-server-2014

3
推荐指数
1
解决办法
2830
查看次数

标签 统计

sql ×1

sql-server ×1

sql-server-2014 ×1

t-sql ×1