найти записи за предыдущие x дней? - PullRequest
19 голосов
/ 22 июля 2011

Как мне создать хранимую процедуру, которая выбирает результаты за последние 30 дней?

where MONTH(RequestDate) > 6 and DAY(RequestDate) >= 10 
and MONTH(RequestDate) < 21 and DAY(RequestDate) < 7

Ответы [ 4 ]

31 голосов
/ 22 июля 2011
SELECT *
FROM Table
WHERE GETDATE() >= DATEADD(DAY, -30, GETDATE())

Замените первую GETDATE () на соответствующее имя столбца.

SELECT *
FROM Table
WHERE Table.ColumnName >= DATEADD(DAY, -30, GETDATE())
4 голосов
/ 22 июля 2011

Вы ищете за последние 30 дней или в прошлом месяце ?Чтобы найти начало и конец каждого месяца («общий», как говорится в вашем комментарии), используйте:

select  dateadd(month,datediff(month,0,getdate()),0), 
    dateadd(mm,datediff(mm,-1,getdate()),-1)
2 голосов
/ 22 июля 2011

Как то так?

  CREATE PROC GetSomeHistory

   @NumDaysPrevious   int

   AS
   BEGIN
       SELECT * FROM MyTable
       WHERE RequestDate BETWEEN DATEADD(dd, -1 * @NumDaysPrevious, getdate())
                             AND getdate();
   END

   ......

   EXEC GetSomeHistory 55;
1 голос
/ 22 июля 2011
SELECT *
FROM Table
WHERE myDate >= DATEADD(MONTH, -1, GETDATE())

выполнение по месяцам отличается от выполнения в 30-дневных блоках.Проверьте это следующим образом ...

declare @mydate smalldatetime
set @mydate = '07/6/01'

select @mydate
select DATEADD(month, 2, @mydate), DATEDIFF(day, DATEADD(month, 2, @mydate), @mydate)
select DATEADD(month, 1, @mydate), DATEDIFF(day, DATEADD(month, 1, @mydate), @mydate)
select DATEADD(month, -1, @mydate), DATEDIFF(day, DATEADD(month, -1, @mydate), @mydate)
select DATEADD(month, -2, @mydate), DATEDIFF(day, DATEADD(month, -2, @mydate), @mydate)
select DATEADD(month, -3, @mydate), DATEDIFF(day, DATEADD(month, -3, @mydate), @mydate)

Вот результаты:

2001-07-06 00:00:00
2001-09-06 00:00:00   |   -62
2001-08-06 00:00:00   |   -31
2001-06-06 00:00:00   |   30
2001-06-06 00:00:00   |   30
2001-05-06 00:00:00   |   61
2001-04-06 00:00:00   |   91
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...