我正在尝试从MySQL数据库中获取一些要在PHP中使用的计数。似乎我应该可以让MySQL输出我需要的数字,而不必在事后用PHP计算。
所以这就是我要做的。我想计算每个月条目的出现次数。所以我有一个这样的数据库。

DateTimeOriginal
2004:11:06 09:58:31
2004:11:08 10:00:25
2004:12:28 12:00:45
2005:03:02 05:00:15
2005:03:15 23:12:10

我想写一个查询,输出这个。
echo $row[0] . ":" . $row[1] . " = " . $row[2];

2004:11 = 2
2004:12 = 1
2005:03 = 2

我试过几件事,却看不出能把我的大脑包起来。我对MySQL还比较陌生,但我知道有一些方法可以让MySQL完成一些繁重的工作。

最佳答案

看起来您希望结果列($row[0]等)为:
第0栏:年份
第1列:月(用0填充到长度2)
第2列:计数
在这种情况下,这应该有效:

SELECT
  YEAR(DateTimeOriginal) AS TheYear,
  DATE_FORMAT(DateTimeOriginal, '%m') AS TheMonth
  COUNT(*)
FROM myTable
GROUP BY
  YEAR(DateTimeOriginal),
  DATE_FORMAT(DateTimeOriginal, '%m')
ORDER BY TheYear, TheMonth

补遗:如果有两列可以(一列用于格式化的年/月,一列用于计数),那么查询就简单多了。
SELECT
  DATE_FORMAT(DateTimeOriginal, '%m:%Y') AS YearMonth,
  COUNT(*)
FROM myTable
GROUP BY DATE_FORMAT(DateTimeOriginal, '%m:%Y')
ORDER BY YearMonth

非常感谢@GordonLinoff指出这一点。这提醒我们,好的建议和好的代码一样重要!

10-06 07:44