2017-09-07 134 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.

相關問題