2015-04-20 36 views
3

的減法,我有以下看法查看SQL - 最新

CREATE VIEW dbo.vw_IssueDates AS 
SELECT UserId, 
     IssueDate 

FROM users 
WHERE IssueDATE <= CONVERT(DATE, '2015-01-20') 
GO 
SELECT * FROM dbo.vw_IssueDates 

我想有出色的罰款超過30天,我知道這將涉及GETDATE動態(所以今天的日期)列表中的用戶和減去30但不知道從哪裏開始?

+1

'IssueDate'是罰款的發出日期嗎?你怎麼知道它是否優秀? –

回答

3

使用DATEADD(day,-30,GETDATE())

SELECT UserId, IssueDate 
FROM users 
WHERE IssueDate >= DATEADD(day,-30,GETDATE()) 

此外,如果你想在一列中多少天了,由於..

SELECT UserId, IssueDate, DATEDIFF(day,IssueDate,GETDATE()) AS DaysOverDue 
FROM users 
WHERE IssueDate >= DATEADD(day,-30,GETDATE()) 
+1

如果我錯了,請原諒我,但我認爲Vlad11想要罰款超過30天。所以我認爲這將意味着30天前發佈的罰款。所以在你的where子句中,我認爲它應該小於不大於。 – Stephan

+1

可能的話,除非發行日期是發行日期,例如一本書。 – Matt

1

另一種方式來解決這個問題是使用DATEDIFF函數。你可以這樣做:

CREATE VIEW dbo.vw_IssueDates AS 
SELECT UserId, 
     IssueDate 
FROM users 
WHERE DATEDIFF(day,IssueDATE,getdate()) > 30 
GO 
SELECT * FROM dbo.vw_IssueDates