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

时间:2017-09-07 23:30:47

标签: sql-server datediff

我需要代码来提取上次付款状态超过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

3 个答案:

答案 0 :(得分:2)

您似乎混淆了starting_date的{​​{1}}和ending_date

datediff

AND DATEDIFF (DAY, D.Last_Change, GETDATE()) > 180 ,当前日期,应该在Get_date()日期之后。

答案 1 :(得分:1)

如果您想要正数,请尝试撤消DATEDIFF中日期的顺序。

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

答案 2 :(得分:0)

我更改了DATEDIFF中的顺序并且它有效。

for /f "delims=" %%i in ('""%~dp0\md5.exe" -n "%%f""') do set "hash=%%i"

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