获取给定日期的周数(周从星期天开始)

问题描述:

我必须计算给定日期的周数,每周的第一天是Sunday获取给定日期的周数(周从星期天开始)

这是我在做什么。

DECLARE @Range_StartDate AS DATETIME = '2017-01-01' 
SELECT @Range_StartDate,DATEPART(WEEK, @Range_StartDate) 

只是一个例子,2016年,第一周从1月3日开始,具有第一周的一天是星期天,我希望提供“2016年1月1日”,它应该返回2016-01- 03年的第一周。

+0

好了,你的结果应该是' '2017年1月1日00:00:00',1'。还有别的吗? –

+0

2017年的第一周从1月1日开始,如果我设置星期一到星期天的抵消。 – DareDevil

+0

@DareDevil一月一日的第一天?在哪个日历中? –

您可以使用下面的代码来获取每周的第一天。 例如, 日期:2017年1月1日,第一天将是2017年1月3日00:00:00.000

DECLARE @Date datetime 
DECLARE @Year int = YEAR('2017-01-01') 
SET @Date = DATEADD(YEAR, @Year - 1900, 0) 

SELECT DATEADD(DAY, (@@DATEFIRST - DATEPART(WEEKDAY, @Date) + (8 - @@DATEFIRST) * 2) % 6, @Date) 

如果你想给2016年1月1日作为输入,并希望2016- 01-03作为输出,那么你可以写下面的东西。

DECLARE @Range_StartDate AS DATETIME = '2016-01-01' 
Declare @Days_ToAdd AS Int = 8-DATEPART(dw, @Range_StartDate) 
if @Days_ToAdd = 7 
set @Days_ToAdd =0 

SELECT @Range_StartDate,DATEADD(day,@Days_ToAdd,@Range_StartDate) 

enter image description here