2015-02-24 56 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