Как выбрать данные за последнюю неделю из сегодняшней даты

Как выбрать данные за неделю (точнее, данные за последние 7 дней) из текущей даты самым быстрым способом, поскольку у меня есть миллионы или строки в таблице. У меня есть метка времени созданного_даты в таблице SQL.

Я пробовал это

SELECT Created_Date
FROM Table_Name
WHERE Created_Date >= DATEADD(day,-7, GETDATE())

У меня два вопроса:

Этот запрос правильный?Это самый быстрый способ получить данные за последние семь дней из таблицы, содержащей миллионы строк?

Ответы на вопрос(3)

Запрос правильный

2О. чем целая таблица, индекс может помочь

2B. Если вас интересует только Created_Date, вы можете попробовать использовать некоторую группу by и count, это должно помочь с размером результирующего набора.

выбрать записи за последние 7 дней

WHERE Created_Date >= DATEADD(day, -7, GETDATE())

выбрать записи за текущую неделю

SET DATEFIRST 1 -- Define beginning of week as Monday
SELECT * FROM
WHERE CreatedDate >= DATEADD(day, 1 - DATEPART(dw, GETDATE()), CONVERT(DATE, GETDATE())) 
  AND CreatedDate <  DATEADD(day, 8 - DATEPART(dw, GETDATE()), CONVERT(DATE, GETDATE()))

если вы хотите выбрать записи за последнюю неделю вместо последних 7 дней

SET DATEFIRST 1 -- Define beginning of week as Monday
SELECT * FROM  
WHERE CreatedDate >= DATEADD(day, -(DATEPART(dw, GETDATE()) + 6), CONVERT(DATE, GETDATE())) 
  AND CreatedDate <  DATEADD(day, 1 - DATEPART(dw, GETDATE()), CONVERT(DATE, GETDATE()))
Решение Вопроса

ЗдесьSQL Fiddle Demo Я создал для вашего конкретного случая

create table sample2
(
    id int primary key,
    created_date date,
    data varchar(10)
  )

insert into sample2 values (1,'2012-01-01','testing');

А вот как выбрать данные

SELECT Created_Date
FROM sample2
WHERE Created_Date >= DATEADD(day,-11117, GETDATE())

Ваш ответ на вопрос