Comment sélectionner les données de la semaine (plus précisément, les données des 7 derniers jours) à partir de la date actuelle de la manière la plus rapide car j'ai des millions ou des lignes dans le tableau. J'ai un horodatage de created_date dans la table sql.
J'ai essayé ça
SELECT Created_Date
FROM Table_Name
WHERE Created_Date >= DATEADD(day,-7, GETDATE())
J'ai deux questions:
Oui, la syntaxe est précise et elle devrait convenir.
Voici le SQL Fiddle Demo J'ai créé pour votre cas particulier
create table sample2
(
id int primary key,
created_date date,
data varchar(10)
)
insert into sample2 values (1,'2012-01-01','testing');
Et voici comment sélectionner les données
SELECT Created_Date
FROM sample2
WHERE Created_Date >= DATEADD(day,-11117, GETDATE())
pour sélectionner les enregistrements des 7 derniers jours
WHERE Created_Date >= DATEADD(day, -7, GETDATE())
pour sélectionner les enregistrements de la semaine en cours
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()))
si vous souhaitez sélectionner des enregistrements pour la semaine dernière au lieu des 7 derniers jours
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. Dans la mesure où les sept derniers jours ont beaucoup moins de lignes que la table entière, un index peut aider
2B. Si vous n'êtes intéressé que par Created_Date, vous pouvez essayer d'utiliser un groupe par et compter, cela devrait vous aider avec la taille du jeu de résultats