2015-04-20 3 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

Простите меня, если я ошибаюсь, но я думаю, что Влад11 хочет выдающихся штрафов более 30 дней. Поэтому я бы подумал, что это будет означать штрафы, которые были выпущены более 30 дней назад. Поэтому в вашем месте где я думаю, он должен быть меньше, чем не больше. – Stephan

+1

Возможно, если IssueDate не является датой выпуска, например, книги. – 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 
Смежные вопросы