テーブルに数百万または行があるので、現在の日付から最速の方法で週データ(より正確には、過去7日間のデータ)を選択する方法。 SQLテーブルにcreated_dateのタイムスタンプがあります。
私はこれを試しました
SELECT Created_Date
FROM Table_Name
WHERE Created_Date >= DATEADD(day,-7, GETDATE())
2つの質問があります。
はい、構文は正確であり、問題ないはずです。
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())
過去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()))
2A。最後の7日間は、テーブル全体よりも行数がはるかに少ない限り、インデックスが役立つ
2B。 Created_Dateのみに興味がある場合は、group byおよびcountを使用してみてください。結果セットのサイズに役立ちます。