2012-08-10 61 views
0

我有一個每個工作日都運行的T-SQL腳本。該腳本爲新客戶查找在過去24小時內,與exceptionof週一將過去72小時進行查找(週五至週日)T-SQL日期函數

Select FirstName, LastName, CustomerID, Date 
FROM Customers 
WHERE 
(
    (
    DATEPART(WEEKDAY, GetDate())=2 AND 
    DATEDIFF(DAY, Customers.Date, GetDate()) <= 3 AND 
    DATEDIFF(DAY, Customers.Date, GetDate()) >= 1 
    ) 
    OR DATEDIFF(DAY, Customers.Date, GetDate()) = 1 
) 

我需要改變這個做一個查找30而不是前幾天。 任何想法?謝謝。

+2

在查詢中使用'GetDate()'追逐移動的目標,影響性能,並可能產生好奇的結果,例如,隨着日期的變化。在變量中捕獲當前日期/時間幾乎總是一個更好的主意,然後根據需要使用該值。在存儲過程中,這在多個語句中更重要。多次使用'GetDate()'的最常見原因是捕獲長時間運行操作的開始和結束時間。 – HABO 2012-08-10 21:12:49

回答

2
WHERE DATEDIFF(DAY, Customers.Date, GetDate()) <= 30 
+0

你最好。非常感謝。 – steve 2012-08-10 21:17:53