2014-12-07 34 views
5

我试图创建一个SQL语句,它计算未交付产品的交付相对于当前日期延迟了多少天。结果应显示延迟天数超过10天的订单行号的订单号,订单日期,产品编号和延迟天数。试图显示datediff大于十天

这是到目前为止我的SQL语句:

SELECT 
    Orderhuvuden.ordernr, 
    orderdatum, 
    Orderrader.produktnr, 
    datediff(day, orderdatum, isnull(utdatum, getdate())) as 'Delay days' 
FROM 
    Orderhuvuden 
JOIN 
    Orderrader ON Orderhuvuden.ordernr = Orderrader.ordernr AND utdatum IS NULL 

我有一个问题,用什么是解决如何显示推迟的天数超过10天。我试着添加类似:

WHERE (getdate() - orderdatum) > 10 

但它不工作。有谁知道如何解决这最后一步?

回答

9

添加到您的where子句:

AND DATEDIFF(day, orderdatum, getdate()) > 10 
1

对我来说,它看起来像你需要添加到您的WHERE子句。

datediff(day, orderdatum, isnull(utdatum, getdate())) > 10 
1

如果您想要的条件是:

WHERE (getdate()-orderdatum) > 10 

简单地改写这个为:

WHERE orderdatum < getdate() - 10 

或者:

WHERE orderdatum < dateadd(day, -10, getdate()) 

这也是 “优化搜索” 的含义比的索引要多可用于查询。