Подтвердить что ты не робот

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

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

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

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

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

  • Правильно ли этот запрос?
  • Это самый быстрый способ получить последние данные за семь дней из таблицы с миллионами строк?
4b9b3361

Ответ 1

Да, синтаксис верен, и все должно быть хорошо.

Вот Скрипт SQL Fiddle, который я создал для вашего конкретного случая

Ответ 2

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

2А. Поскольку последние семь дней имеют намного меньше строк, чем целая таблица, индекс может помочь

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

Ответ 3

для выбора записей за последние 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()))