2012-08-10 62 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