2013-08-27 71 views
1

如何獲取SQL Server 2005中的記錄。輸入將是工作日日期。輸出應該是該日期前一週的所有記錄。例如,如果我給星期三日期,我應該從星期一到星期三的所有記錄。從一週中獲取記錄,直到給定日期

我已經試過這個功能,以獲得某個星期給出的輸入的特定一週中的所有記錄。但我想要記錄,直到星期一的指定日期。

where RD.Date > DATEADD(dd, -(DATEPART(dw, @Date)-1), @Date) and RD.Date < DATEADD(dd, 7-(DATEPART(dw, @Date)), @Date) 

感謝您的幫助!

回答

3

這個怎麼樣?

WHERE RD.Date BETWEEN DATEADD(wk, DATEDIFF(wk,0,@Date), 0) AND @Date 

我知道在SQL Server中,勢力之間的包含搜索,所以你可以做一個>和<對RD.DATE

2

這應該工作:

SET DATEFIRST 1 
... 
WHERE RD.Date >= DATEADD(dd, (-1) * (DATEPART(dw, @Date) - 1), @Date) 
AND RD.Date < DATEADD(dd, 1, @Date) -- inclusive 

DATEPART(dw, @Date)返回天數的一週中,因此對於週三返回3.不過既然你要包括星期一我需要減去1

根據Lamak的評論MSDN

當日期部分是周(WK,溼重)或平日(DW)中,返回值 取決於爲s的值通過使用SET DATEFIRST。

+2

這3根據DATEFIRST'的'設置返回,它不是絕對值 – Lamak

+0

@Lamak:謝謝。相應地編輯我的答案。 –

相關問題