如何在 SQL Server 2014 中获得超过 6 个月的结果?

How to get results older than 6 months in SQL Server 2014?

我需要提取上次付款状态早于 6 个月前的帐户记录的代码。但是我不太确定为什么我的 DateDiff 不起作用。

到目前为止我的代码:

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

您似乎混淆了 datediffstarting_dateending_date

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

Get_date(),当前日期,应该晚于您的 Last_change 日期。

我更改了 DATEDIFF 中的顺序并且成功了。

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

这行代码有效并根据需要给了我结果。

如果您想要一个正数,请尝试颠倒 DATEDIFF 中日期的顺序。

例如:SELECT DATEDIFF(DAY,GETDATE(),'20170101') returns -250。 SELECT DATEDIFF(DAY,'20170101',GETDATE()) returns 250.