php - 如何从 PHP 中的 MySQL 时间戳计数打印月份名称?

标签 php mysql

我使用 json 输出按时间戳月份计算文章浏览量。我有这段代码:

$value = array();
$stats  = Access::FETCH("SELECT COUNT(*) AS id FROM news_stats GROUP BY YEAR(date), MONTH(date)");

foreach($stats as $key => $value){

   $rows2[] = $value['id'];

   }
echo json_encode($rows2);

输出是:注意:这是每个月的计数

["1","6"]

我需要像这样为这个输出打印月份名称:

["january","June"]

如何在打印月份名称? Menaig 是:1 , 6 从哪个月算起?

最佳答案

您可以在 MySQL 本身中通过调整您的查询来使用 MONTHNAME 来完成它:

SELECT COUNT(*) AS id FROM news_stats GROUP BY YEAR(date), MONTHNAME(date);

通过 mktime/date 组合在 PHP 中执行此操作的唯一真正值(value)在于您的脚本不知何故需要数值以及完整的月份名称本身。但这也可以在 MySQL 中通过执行诸如 SELECT YEAR(date) as year, MONTH(date) as month, MONTHNAME(date) as month_name... 之类的操作来解决,但这一切都取决于编码需求比什么都重要。

此外,刚刚意识到在您的示例中,它都是为 GROUP BY 编码的。所以也许这会更好:

SELECT COUNT(*) AS id,
YEAR(date) as `year`,
MONTH(date) as `month`,
MONTHNAME(date) as `month_name`,
FROM `news_stats`
GROUP BY `year`, `month`;

关于php - 如何从 PHP 中的 MySQL 时间戳计数打印月份名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24331096/

相关文章:

php - CodeIgniter - Group by with order by 不按预期工作

php - "Class ' Quote_Tag ' not found"Laravel Eloquent 多对多

php - Codeigniter 外键数据检索

mysql - 性能不佳的查询需要帮助

php - Mysql 结果不存储在文件中

php - 如何解析 Mysql 存储过程中的 PHP Searilize 数据并循环它

php - 如何在Yii2中结合数据提供者?

php - Laravel:内部连接 ​​QueryException

mysql - 在 MySQL 查询中使用列名作为表

php - 使用 PHP 缓存 HTTP 文件