首先是数据库查询SELECT DATE_FORMAT(FROM_UNIXTIME(sortrank),'%Y%m') AS MONTH,COUNT(*) AS num
FROM `dede_archives`
WHERE `sortrank`
BETWEEN UNIX_TIMESTAMP(NOW()) - 31556926
AND UNIX_TIMESTAMP(NOW())
GROUP BY MONTH
sortrank 是日期字段
DATE_FORMAT('字段','%m-%d') 函数用于以不同的格式显示日期/时间数据。
FROM_UNIXTIME 格式化MYSQL时间戳函数
BETWEEN 操作符在 WHERE 子句中使用,作用是选取介于两个值之间的数据范围。
GROUP BY 语句用于结合合计函数,根据一个或多个列对结果集进行分组。整句意思就是查询 YM年月 命名month,然后他的数量命名num
来自dede_archives 表,
条件是 sortrank 字段
在 UNIX_TIMESTAMP(NOW()) - 31556926 当前时间减少1年 //你要是想查3年就在数字后面*3即可
和当前时间中间
进行结合 按照月份
如果要所有时间则可以把where删掉即可
得出的结果我们可以发现,为0的月份是没有的!
那么我们就需要php循环了