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

时间:2017-02-28 10:24:33

标签: sql-server datetime weekday

我必须计算给定日期的周数,一周的第一天是Sunday

这就是我在做什么。

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

仅举一个例子,2016年,第一周从1月3日开始,第一周是星期日,我想提供'2016-01-01',它应该在第一周返回2016-01-03今年。

2 个答案:

答案 0 :(得分:1)

如果您想将2016-01-01作为输入并希望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

答案 1 :(得分:0)

您可以使用以下代码获取一周的第一天。 例如, 日期:2017-01-01,第一天将是2017-01-03 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)
相关问题