mysql 查询每个月发布的文章数。月份无数据显示为0。如何写SQL呢

article表
字段id (int),title (string),createtime (时间戳)

比如要查询2015年3月到2017年8月份,每个自然月发布的文章是多少篇。
月份没有发布文章的显示为0。
比如:

Array
(
    [0] => Array
        (
            [month] => 2015-3
            [times] => 0
        )
    [1]=> Array
        (
            [month] => 2015-4
            [times] => 4
        )
    [2]=> Array
        (
            [month] => 2015-5
            [times] => 0
        )
        
    ...
    [...]=> Array
        (
            [month] => 2017-8
            [times] => 4
        )
     

)
手掌心
浏览 3154回答 6
6回答

阿波罗的战车

select DATE_FORMAT(createtime,'%Y-%m'), count(*) from article group by DATE_FORMAT(createtime,'%Y-%m') 针对没有数据的月份,可以放在程序里循环处理一下

慕沐林林

效率比较好的建议是程序算出开始时间和结束时间,数据库只是单纯的between...and...,然后可以对结果使用redis缓存下来

慕标琳琳

select month ( create_time ) ,count(*) from orders where year ( create_time) = 2015 group by month (create_time) 我表里的时间存的是DATETIME 2015-05-05 23:59:59楼上的兄弟说的很明白,没有数据,就没有默认值一说

回首忆惘然

首先一点,没有数据的话,mysql也不会有数据,所以会缺失月份。尼需要用程序填充 SELECT COUNT(1) AS total,FROM_UNIXTIMESTAMP(createtime,'%Y-%m') as m from article GROUP BY m ORDER BY m ASC
打开App,查看更多内容
随时随地看视频慕课网APP