2017-04-05 81 views
2

我正在創建存儲過程以基於週數,月份數和年份數在日期範圍內顯示某些記錄。在SQL Server中獲取每週給定的一週數,月份數和年份的日期範圍

例如:

Month = 4 [APRIL] 
Week = 2 [Week 2 for APRIL] 
Year = 2017 

輸出應該是:開始一天應該是星期天]

STARTDATE | END DATE 
4-2-2017 | 4-8-2017 

到處搜尋,有這個一個已經很難。

編輯: 我提供了一個示例查詢,以供參考

@Month int, 
@Year int, 
@WeekNumber int 

SELECT 
(start date of the week based on week num, month, year) as DATE1, 
(end date of the week based on week num, month, year) as DATE2 
WHERE 
StartDate = (start date of the week based on week num, month, year) 
EndDate = (end date of the week based on week num, month, year) 
+0

這可能有助於 https://www.sqlservercentral.com/Forums/FindPost1328016.aspx – CurseStacker

+0

謝謝。但不幸的是,我沒有回答我的問題。需要的參數是週數,月數和年份,而不是完整的日期。 –

+0

你能包括你要執行查詢的位置的示例數據嗎? – CurseStacker

回答

1

這或許可以提供幫助。

示例更新了2008年

Declare @Month int = 4 
Declare @Year int = 2017 
Declare @Week int = 2 


Select DateR1 = min(RetVal) 
     ,DateR2 = max(RetVal) 
From (
     Select *,WkNr = Dense_Rank() over (Order by DatePart(WEEK,RetVal)) 
     From (Select Top (40) RetVal=DateAdd(DD,-1+Row_Number() Over (Order By Number),cast(str((@Year*10000)+(@Month*100)+1,8) as date)) From master..spt_values) D 
    ) A 
Where [email protected] 

返回

DateR1  DateR2 
2017-04-02 2017-04-08 
+0

「'DateFromParts'不是公認的內置函數名稱。」 - 我正在使用2008 R2。 –

+0

@TheNoob肯定會給我片刻 –

+0

。一個快速的反饋將不勝感激 –

相關問題