article表
字段id (int),title (string),createtime (時間戳)
比如要查詢2015年3月到2017年8月份,每個自然月發(fā)布的文章是多少篇。月份沒有發(fā)布文章的顯示為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
)
)
6 回答

阿波羅的戰(zhàn)車
TA貢獻(xiàn)1862條經(jīng)驗 獲得超6個贊
select DATE_FORMAT(createtime,'%Y-%m'), count(*) from article group by DATE_FORMAT(createtime,'%Y-%m')
針對沒有數(shù)據(jù)的月份,可以放在程序里循環(huán)處理一下

慕沐林林
TA貢獻(xiàn)2016條經(jīng)驗 獲得超9個贊
效率比較好的建議是程序算出開始時間和結(jié)束時間,數(shù)據(jù)庫只是單純的between...and...,然后可以對結(jié)果使用redis緩存下來

慕標(biāo)琳琳
TA貢獻(xiàn)1830條經(jīng)驗 獲得超9個贊
select month ( create_time ) ,count(*) from orders where year ( create_time) = 2015 group by month (create_time)
我表里的時間存的是DATETIME 2015-05-05 23:59:59
樓上的兄弟說的很明白,沒有數(shù)據(jù),就沒有默認(rèn)值一說

回首憶惘然
TA貢獻(xiàn)1847條經(jīng)驗 獲得超11個贊
首先一點,沒有數(shù)據(jù)的話,mysql也不會有數(shù)據(jù),所以會缺失月份。尼需要用程序填充
SELECT COUNT(1) AS total,FROM_UNIXTIMESTAMP(createtime,'%Y-%m') as m from article GROUP BY m ORDER BY m ASC
- 6 回答
- 0 關(guān)注
- 3202 瀏覽
添加回答
舉報
0/150
提交
取消