如何在 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
您似乎混淆了 datediff
的 starting_date
和 ending_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.
我需要提取上次付款状态早于 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
您似乎混淆了 datediff
的 starting_date
和 ending_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.