2014-09-03 26 views
0

我試圖創建一個靈活的方式來確定前一週的最後一天,知道這將在具有不同規劃周的不同環境中運行(某些客戶使用週六至週五;週六至週日;週一至週日)。我打算創建一個變量爲每一個客戶的一週的開始天使用(見下文)SQL - 靈活地確定前一週的最後一天

Set @BeginningWeek = 1 -- 1=Mon; 2=Tues; 3=Wed; 4=Thurs; 5=Fri; 6=Sat; 7=Sun 

我一直在嘗試使用DATEADD和日期部分的組合,與可變沿着上面嘗試得到一週前的最後一天,但我在邏輯上遇到了問題。我不想使用Set DateFirst,這些腳本將在客戶環境中運行,所以我不想在其數據庫中更改任何內容。

假設腳本運行在星期三(9/3);並且客戶的計劃週週一至週五;我想要設置另一個變量@EndDate =上一個星期五(8/29)。我需要能夠靈活地使用同一個腳本(只更改@BeginningWeek值),而另一個客戶的計劃週期是週一至週日,並且@EndDate =前一個週日(8/31)。

+0

您使用的是什麼RDBMS? – Andrew 2014-09-03 19:23:38

+0

Microsoft SQL Server – NRud 2014-09-03 19:25:07

回答

0

這會讓你在前一個星期六。

SELECT DATEADD(day, 
       -1 - (DATEPART(dw, GETDATE()) + @@DATEFIRST - 2) % 6, 
       GETDATE() 
     ) 

您應該能夠根據實際所需的一天是什麼樣的參數,以取​​代%6位。

相關問題