2013-03-30 62 views
1

我試圖根據用戶輸入的周開始日創建自定義週數和範圍。sql自定義生成周範圍

我通過SET Datefirst = @Userdefinedvalue(使用函數將星期幾的起始值映射到T-SQL)將該用戶定義的日期傳遞給該用戶。另外我有一個功能可以讓我在本週的最後一天。

這是最好的方法是什麼?

我的目標是:如果我選擇週二是一週中我開始一天的存儲過程來產生我的週數,並開始/基於我選擇整年結束日期

+0

[歡迎計算器!(http://stackoverflow.com/faq)這是一個以社區爲主持Q/A網站,所以我把提高的格式化的自由你張貼一點。我希望你不要介意=)快樂的編碼! –

+0

您在查找查詢結果,或者您正在更新表格嗎? –

+0

將在全年生成查詢結果。 – Milen

回答

1

的想法是找到一週的第一天。首先,使用內置函數的SQL Server將本週的開始時間移至星期日(美國境內),方法是減去datepart(wd)。其實datepart(wd)返回值1到7,我們希望他們0到6.

然後,根據您的一週的日期添加一個偏移量。下面是示例代碼:

declare @offset int (case when @DateFirst = 'Mon' then 1 
          when @DateFirst = 'Tue' then 2 
          ... 
          when @DateFirst = 'Sun' then 0 
        end); 

select dateadd(dd, @offset - (datepart(wd, thedate) - 1) 
       thedate) as WeekStartDate 
+0

謝謝,我會着迷它 – Milen

+0

這是完美的。我正在使用:'選擇@DateToUse = DATEADD(YEAR,DATEDIFF(YEAR,0,GETDATE()),0)'作爲示例的year-thedate字段的第一天。謝謝。 – Milen