php - 获取特定日期范围内的文章数量

标签 php mysql

我希望在特定日期期间每天对我的文章进行计数,这样我就可以获得 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 ';

比我想进入循环,但必须有一些更好的单一查询解决方案。

这是针对我网站上的日历的,因此一次查询可以节省大量处理器时间。

希望有人帮忙。谢谢。

最佳答案

您可以使用 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);

关于php - 获取特定日期范围内的文章数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7706625/

相关文章:

php - 如何遍历 mysql_query() 结果

php - 如何在codeigniter中使用blob?

php - 使用 LIKE 和 WHERE 的 SQL 查询内部连接

mysql - 为什么只有部分信息上传到数据库?

javascript - 使用javascript函数将IP插入数据库?

php - 如何使来自另一个域的用户能够从我的域中搜索记录?

php - 配置中的 Codeigniter 表单验证取决于另一个输入

PHP 内容长度 header 延迟加载

mysql - 将这三个 SELECT 语句组合起来是否可行且谨慎?

c# - 如何使用 MySQL Connector for .NET 或 Dapper 从 SHOW PROCESSLIST 获取行?