2013-03-12 72 views
0

我正在嘗試編寫一個SQL查詢以返回在過去7天內向我的網站提交了多少鏈接。到目前爲止,我有這樣的:按日期對時間戳字段進行分組

SELECT COUNT(`id`) AS `count` 
FROM `links` 
WHERE `created` > NOW() - 86400 
AND `created` < NOW() 

這個工程的某一天,它返回稱爲count與在過去24小時內提交的鏈接數量一行。我需要將其更改爲返回2列,分別爲datecount,共7行(每天一個)。

棘手的部分,我不能讓我的頭左右是createdtimestamp列,我無權改變它,所以我必須使用它。

編輯:工作在查詢進展情況:

SELECT DAY(FROM_UNIXTIME(created)) AS day, COUNT(id) count 
FROM links 
GROUP BY DAY(FROM_UNIXTIME(created)) 
LIMIT 7 

回答

2

NOW()其實不應該工作,因爲它返回一個datetime。另外,如果您想獲取7天的數據,則需要從UNIX_TIMESTAMP()減去604800。您可以使用datetime功能FROM_UNIXTIME。這將使分組更容易。理想情況下,您的列應該是datetime類型。

它會去是這樣的:

SELECT DAY(FROM_UNIXTIME(created)) day, COUNT(id) count 
FROM links 
WHERE created > UNIX_TIMESTAMP() - 604800 AND created < UNIX_TIMESTAMP() 
GROUP BY DAY(FROM_UNIXTIME(created)) 

您也可以使用BETWEEN操作:

WHERE created BETWEEN UNIX_TIMESTAMP() - 604800 AND UNIX_TIMESTAMP() 

See the demo

相關問題