我需要代码来提取上次付款状态超过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
答案 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"
这行代码工作,并根据需要给我结果。