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

如何在PHP中从MySQL时间戳计数打印月份名称?,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); 输出为

我使用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"]

怎样才能打印月名?菜单是:
1,6
从哪个月开始计数?

您可以在foreach循环中使用与此类似的代码:

<?php
$monthNum = $value['id'];
$monthName = date("F", mktime(0, 0, 0, $monthNum, 10));
?>


摘自:

您可以在MySQL中通过如下方式调整查询以使用:

在PHP中通过
mktime
/
date
组合来执行此操作的唯一真正价值在于,您的脚本需要数字值以及完整的月份名称本身。但是在MySQL中也可以通过做一些事情来解决这个问题,比如选择年(日期)作为年,选择月(日期)作为月,选择月(日期)作为月名称……,但这一切都取决于编码需求

另外,刚刚意识到在您的示例中,它都是为
groupby
编码的。因此,也许这会更好:

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

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


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

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

   }
   echo json_encode($rows2);
输出为:

["June","August"]

享受

看看选项“F”@joe,当它可以通过
MONTHNAME
在MySQL中处理时,为什么要在PHP中这样做?米凯布兰特指出:“这仍然不会给他在成绩集中的得分机会。”。添加了我的认识,即
GROUPBY
是查询返回值的地方。现在在我的最新编辑中进行了调整。@JakeGould:jake我有一个问题:是否可以列出一年中的所有月份并按月计数,如果任何月份没有计数,则每月打印计数显示0如下:
[“12”、“0”、“0”、“120”、“70”、“30”、“20”、“11”、“0”、“0”、“10”、“89”]
如何创建此项?@user27133抱歉,这超出了我的能力范围。祝你好运基本问题是查询根本不返回任何关于月份的数据。再多的PHP日期操作也解决不了这个问题。
["June","August"]