2015-02-24 46 views
0

我有這樣的查詢。我想知道是否有替代品的日期內聯代碼條件?SQL Server中的日期內嵌代碼條件代碼

(p.PeriodBeginDate) <= (GETUTCDATE())  
AND DATEADD("dd",180, (p.PeriodEndDate)) >= (GETUTCDATE()) 

下面是一個簡單的查詢

SELECT 
    r.ReviewRoleID, rpp.*  
FROM 
    dbo.rev_Period_Person AS rpp 
JOIN 
    dbo.rev_Period p ON rpp.PeriodID = p.PeriodID  
LEFT JOIN 
    dbo.rev_Review r ON rpp.PeriodID = r.PeriodID  
        AND rpp.PersonID = r.RevieweePersonID  
        AND r.ReviewRoleID = 2  
        AND r.ReviewSelfAssessmentStatusID = 3  
        AND r.IsActive = 1  
WHERE 
    (p.PeriodBeginDate) <= (GETUTCDATE())  
    AND DATEADD("dd",180, (p.PeriodEndDate)) >= (GETUTCDATE()) 
+0

替代/替代:'WHERE GETUTCDATE()BETWEEN p.PeriodBeginDate AND DATEADD(DAY,180,p.PeriodEndDate)' – 2015-02-24 09:23:06

回答

1

其中GETUTCDATE()之間(p.PeriodBeginDate)AND DATEADD( 「DD」,180,(p.PeriodEndDate))

+0

有沒有辦法重新編碼這個DATEADD(「dd」,180,(p.PeriodEndDate))? – 2015-02-24 09:32:16

+0

這種說法可能會導致性能問題? – 2015-02-24 09:32:50

+0

@crisgomez它不會導致性能問題。該功能本身不會導致性能問題。由該條件過濾的記錄數量可能會導致性能下降,但是您的問題在其他地方,而不是在這種情況下,如果條件符合您的所需邏輯。 – 2015-02-24 09:37:04