2017-03-06 195 views
2

我有一個SQL表格命中我的網站稱爲ExternalHits。我將URL追蹤爲URLx,並將該頁面的日期作爲Datex進行訪問。我每週都會運行這個查詢來獲得前一週總訪問數,而且每個星期我都必須手動更改「之間」日期。有什麼方法可以改變我的查詢,以便「之間」日期類似今天和今天7? Ijust希望不必每週都手動更改日期。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中,'之間的轉換(日期,GETDATE())AND DATEADD(DD,-7,CONVERT(日期,GETDATE()))'。你的標籤有衝突。這是MySQL還是Microsoft SQL Server? –

+1

有了衝突的標籤,這幾乎不可能回答。 mysql和sql server的語法差別很大。 –

+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

你必須交換之間的參數。 – Polluks

1

使用dateadd從當前日期中刪除一週。

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

你必須交換之間的參數。 – Polluks

+0

哎呀,修好了,謝謝 –