我想在特定日期期间每天计算我的文章,因此我可以获得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 ';
而且我想进入循环,但单一查询必须有更好的解决方案。
这是针对我网站上的日历,因此一个查询可以节省大量处理器时间。
希望有人能提供帮助。感谢。
答案 0 :(得分: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);
答案 1 :(得分: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 )"
请务必在使用之前清理日期时间的开始和结束。