2017-02-28 347 views
0

我必須計算給定日期的週數,每週的第一天是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一月一日的第一天?在哪個日曆中? –

回答

0

您可以使用下面的代碼來獲取每週的第一天。 例如, 日期: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) 
1

如果你想給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

相關問題