web-dev-qa-db-fra.com

Requête SQL où Date = Aujourd'hui moins 7 jours

J'ai un tableau SQL de visites sur mon site Web appelé ExternalHits. Je dépiste l'URL en tant qu'URLx et la date d'accès à la page en tant que Datex. J'exécute cette requête chaque semaine pour connaître le nombre total de visites de la semaine précédente et chaque semaine, je dois modifier manuellement les dates "entre". Est-il possible de modifier ma requête de sorte que les dates "entre" ressemblent à TODAY AND TODAY-7? Je veux juste ne pas avoir à changer manuellement les dates chaque semaine.

    SELECT URLX, COUNT(URLx) AS Count
    FROM ExternalHits
    WHERE datex BETWEEN '02/27/2017' AND '03/05/2017'    
    GROUP BY URLx
    ORDER BY Count DESC; 
3
Ashley K
declare @lastweek datetime
declare @now datetime
set @now = getdate()
set @lastweek = dateadd(day,-7,@now)

SELECT URLX, COUNT(URLx) AS Count
FROM ExternalHits
WHERE datex BETWEEN @lastweek AND @now
GROUP BY URLx
ORDER BY Count DESC; 
10
Aziz Javed

Utilisation de dateadd pour supprimer une semaine de la date actuelle.

datex BETWEEN DATEADD(WEEK,-1,GETDATE()) AND GETDATE()
5

Utilisez les fonctions intégrées:

SELECT URLX, COUNT(URLx) AS Count
FROM ExternalHits
WHERE datex BETWEEN DATE_SUB(NOW(), INTERVAL 7 DAY) AND NOW()
GROUP BY URLx
ORDER BY Count DESC; 
1
Ben

Vous pouvez utiliser les fonctions CURDATE() et DATE_SUB() pour y parvenir: 

SELECT URLX, COUNT(URLx) AS Count
FROM ExternalHits
WHERE datex BETWEEN DATE_SUB(CURDATE(), INTERVAL 7 DAY) AND CURDATE()    
GROUP BY URLx
ORDER BY Count DESC; 
0
Hunter McMillen

Vous pouvez soustraire 7 de la date actuelle avec ceci:

WHERE datex BETWEEN DATEADD(day, -7, GETDATE()) AND GETDATE()
0
kristech
DECLARE @Daysforward int
SELECT @Daysforward = 25 (no of days required)
Select * from table name

where CAST( columnDate AS date) < DATEADD(day,1+@Daysforward,CAST(GETDATE() AS date))
0
user10996728