2017-03-06 15 views
2

私のWebサイトには、ExternalHitsというヒットのSQLテーブルがあります。私は、URLxとそのページがDatexとしてアクセスされた日付としてURLを追跡します。このクエリを毎週実行して前の週のヒット数を取得し、毎週手動で「between」の日付を変更する必要があります。 "between"の日付が今日と今日のようなものになるようにクエリを変更できる方法はありますか?毎週手動で日付を変更する必要はありません。SQLクエリの日付=今日のマイナス7日

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

これは、SQL Server、 'CONVERT BETWEEN(日付、GETDATE())AND DATEADDある場合(DD、-7は、CONVERT(日付、GETDATE()))'。競合するタグがあります。このMySQLまたはMicrosoft SQL Serverはありますか? –

+1

矛盾するタグがあるため、これはほぼ不可能です。構文はmysqlとSQLサーバでは大きく異なります。 –

+0

修正されました。私の悪い。それはSQL Serverです。 –

答えて

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

これは私が必要とするものです!ありがとうございました! –

0

機能で構築を使用します。

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

あなたはこれを達成するためにCURDATE()DATE_SUB()機能を使用することができます。

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

あなたは、現在の日付から7を引くことができますこれは:

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

は、次を使用します。

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

・ホープ、このことができます。

+1

Betweenのパラメータを入れ替える必要があります。 – Polluks

1

dateaddを使用すると、現在の日付から1週間を削除できます。

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

Betweenのパラメータを入れ替える必要があります。 – Polluks

+0

おっと、それを修正しました、ありがとう –

関連する問題