我必须计算给定日期的周数,一周的第一天是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今年。
答案 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)
答案 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)