2011-10-09 76 views
0

我想在特定的日期內每天都有我的文章計算,所以我可以獲得40天40天的數量。獲取特定日期範圍內的文章數量

CREATE TABLE IF NOT EXISTS `articles` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `caption` varchar(255) NOT NULL, 
    `author_id` int(11) NOT NULL, 
    `date_added` datetime NOT NULL, 
    `body` text NOT NULL, 
    `description` varchar(500) NOT NULL, 
    `location` varchar(255) NOT NULL, 
    PRIMARY KEY (`id`), 
    KEY `author_id` (`author_id`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=4 ; 

我不是在MySQL的專家,所以在這裏我走最遠的是這樣的:

$sql = 'SELECT date_added FROM articles '; 
    $sql .= 'WHERE date_added > ' . '"' . $mysql_datetime_start . '" AND '; 
    $sql .= 'date_added < ' . '"' . $mysql_datetime_end . '" '; 
    $sql .= 'GROUP BY date_added '; 

而且比我想進入循環,但必須有單查詢的一些更好的解決方案。

這是爲了我的網站上的日曆,所以一個查詢可以節省大量的處理器時間。

希望有人會幫助。謝謝。

回答

1

您可以使用MySQL的DATE函數分隔出DATETIME列的日期部分,然後按它進行分組。

SELECT DATE(date_added), COUNT(*) FROM articles 
WHERE date_added BETWEEN $mysql_datetime_start AND $mysql_datetime_end 
GROUP BY DATE(date_added); 
+0

我不是100%確定,但這不會給天數的文章.. –

1

我認爲這是你在找什麼:

$sql = 
"SELECT DATE(date_added), count(*) FROM articles 
    WHERE date_added > '" . $mysql_datetime_start . "' 
    AND date_added < '" . $mysql_datetime_end . "' 
    GROUP BY DATE(date_added)" 

務必在使用前消毒的日期時間開始和結束。