2017-03-06 2 views
2

J'ai un tableau SQL des hits sur mon site Web appelé ExternalHits. Je surveille l'URL comme URLx et la date à laquelle la page a été accédée en tant que Datex. Je lance cette requête chaque semaine pour obtenir le nombre total de visites de la semaine précédente, et chaque semaine je dois changer manuellement les dates "entre". Y a-t-il un moyen de changer ma requête de sorte que les dates "entre" sont quelque chose comme AUJOURD'HUI ET AUJOURD'HUI-7? Je veux juste ne pas avoir à changer manuellement les dates chaque semaine.Requête SQL Où date = aujourd'hui Moins 7 jours

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; 
+0

Si cela est SQL Server, 'ENTRE CONVERT (date, GETDATE()) ET DATEADD (DD, -7, REDUIRE (date, GETDATE()))'. Vous avez des tags en conflit. Est-ce MySQL ou Microsoft SQL Server? –

+1

Avec les étiquettes contradictoires, il est presque impossible de répondre. La syntaxe est très différente entre mysql et sql server. –

+0

Fixé. Ma faute. C'est SQL Server. –

Répondre

4
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; 
+0

C'est exactement ce dont j'ai besoin! Je vous remercie! –

0

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; 
0

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

Vous pouvez soustraire 7 de la date actuelle avec ceci:

WHERE datex BETWEEN DATEADD(day, -7, GETDATE()) AND GETDATE() 
0

Utilisez les éléments suivants:

WHERE datex BETWEEN GETDATE() AND DATEADD(DAY, -7, GETDATE())

Hope this helps.

+1

Vous devez permuter les paramètres de Between. – Polluks

1

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

datex BETWEEN DATEADD(WEEK,-1,GETDATE()) AND GETDATE() 
+0

Vous devez permuter les paramètres de Between. – Polluks

+0

oups, corrigé, merci –