2017-09-07 131 views
1

我需要提取上次付款状态超过6个月前帐户记录的代码。但我不太确定为什么我的DateDiff不起作用。如何在SQL Server 2014中获得6个月以上的结果?

我迄今为止代码:

SELECT A.[AccountId] 
     ,[AccountNumber] 
     ,[AccountTypeId] 
     ,[AccountStatusId] 
     ,[CurrentBalance] 
     ,[PaymentStatusID] 
     ,D.Last_Change 

    FROM [Account] A 
    INNER JOIN ( 
       SELECT AccountId 
        ,MAX(Created) Last_Change 
       FROM PaymentStatusHistory 
       WHERE ToPaymentStatusID IN (1,2,11)    
       GROUP BY AccountId 
      ) D 
       ON A.AccountID = D.AccountId 

    WHERE PaymentStatusID IN (1,2,11) 
    AND AccountStatusId IN (1,2) 
    --AND DATEDIFF (DAY, GETDATE(), D.Last_Change) > 180 --Need THIS line corrected. 

    ORDER BY CurrentBalance DESC, AccountNumber 
+0

你是什么意思“不起作用”?你有错误吗?或者结果与你期望的不同? – cddt

回答

2

你似乎混淆了你的datediffstarting_dateending_date

AND DATEDIFF (DAY, D.Last_Change, GETDATE()) > 180 

Get_date(),当前的日期,应该是你Last_change日期之后。

+0

谢谢。我意识到我的错误,并纠正了它。它现在有效。非常感谢。 – user1777929

0

我改变了在DATEDIFF的顺序,它的工作。

AND DATEDIFF (DAY, D.Last_Change, GETDATE()) > 180 

这行代码的工作,并根据需要给我的结果。

1

如果您想要一个正数,请尝试颠倒DATEDIFF中日期的顺序。例如:SELECT DATEDIFF(DAY,GETDATE(),'20170101')返回-250。 SELECT DATEDIFF(DAY,'20170101',GETDATE())返回250.

相关问题